2

私はHibernate、Maven、Eclipse(STSビルド)を使ってプロジェクトをビルドしています。 hbm.xmlファイルを使用してスキーマを指定しています。私はモデルクラスを生成するためにHibernateのhbm2javaを使用したいと思います。私はそれがうまく動作し、私が望む種類のコードを生成しています。Hibernateのhbm2javaを使用するためのベストプラクティスは何ですか?

これはコマンドラインから完全に実行され、モデルコードを生成してから、期待通りにビルドしてテストします。

しかし、Eclipseはそれを処理できないようです。それは定期的に "心を失い"、手作業でコーディングされたDAOクラスで参照される非常に単純なインポートとクラスを解決することができません。見つけられないものは、HibernateUtilのようなクラスです。皮肉なことに、モデルクラスを見つけるのに何の問題もないようです。

未解決のクラスは、実行の最後にtarget/classes/blah-blahフォルダにあります。彼らは明らかに正しい場所にコピーされています。

"継続的な統合"環境では、ソースを一度生成してバージョンコントロールにコミットしてからコードジェネレータを無効にすることをお勧めしますか?あるいは、毎回コードを生成することが可能ですか?人間の介入なしにデータベースの変更を確実に取り込めるようにしますか?

答えて

5

IMHO、エンティティはアプリケーションのコアである必要がありますので、設計、実装、慎重に文書化する必要があります。彼らはオブジェクトであると考えられ、メソッドは動作をカプセル化します。それらを自動生成させることは馬鹿げています。

開始時にそれらを生成すると、開始するオプションになる可能性があります。生成された後は、それらを手作りして再度生成しません。スキーマが変更されたときに必要なプロパティとメソッドを追加し、既存のコードをリファクタリングします。

私は実際にはあまり冗長でなく、エラーが起こりにくく、すべての情報が単一の場所にあるため、マッピングにアノテーションを使用することをお勧めします。

+0

ありがとうございます。しかし、私は "真実の源"を私のデータベーススキーマにしたい。スキーマクラスとモデルクラスの両方を手書きで書くことで、その知識が存在する場所が複数あるようになりました。モデルが定義されている唯一の場所がデータベーススキーマ(またはこの場合はhbm.xmlファイル)であることを確認してください。 – Marvo

+2

注釈を使って作業しましたが、正反対であることがわかりました。本当に見苦しく、コード全体に広がっています。 hbmファイルでは、データベース定義がすべて1か所にあるように感じます。しかし、私はその時点でまだ解決していません。 (私の質問にもかかわらず、あなたの答えを本当に感謝します。) – Marvo

+0

データベーススキーマは、データベース内、またはスキーマの作成に使用されたSQLスクリプト内にあり、hbmファイルにも含まれているため、hbmまたは手作業で生成されたクラスをどのように変更するかはわかりません。同期されていないhbmファイルとjavaファイルが心配な場合は、注釈を使用してください。いずれにしても、すべてが正しく動作することをテストするには、単体テストが必要です。 –

0

このお試しください:

mvn eclipse:clean eclipse:eclipse 

を、それが日食をプラグイン見つけることができないと言うなら、試してみてください:プロジェクトのpom.xmlが存在し、実行するプロジェクトディレクトリにコマンド・ライン・トラバースから

mvn eclipse:install-plugin 

まず、上記のコマンドをもう一度実行してください。

このようにして、すべてのプロジェクトとプロジェクトの依存関係は、Eclipseレベルでも解決されます。

これはあなたが探していたものではない場合は教えてください。

関連する問題