私はHibernate、Maven、Eclipse(STSビルド)を使ってプロジェクトをビルドしています。 hbm.xmlファイルを使用してスキーマを指定しています。私はモデルクラスを生成するためにHibernateのhbm2javaを使用したいと思います。私はそれがうまく動作し、私が望む種類のコードを生成しています。Hibernateのhbm2javaを使用するためのベストプラクティスは何ですか?
これはコマンドラインから完全に実行され、モデルコードを生成してから、期待通りにビルドしてテストします。
しかし、Eclipseはそれを処理できないようです。それは定期的に "心を失い"、手作業でコーディングされたDAOクラスで参照される非常に単純なインポートとクラスを解決することができません。見つけられないものは、HibernateUtilのようなクラスです。皮肉なことに、モデルクラスを見つけるのに何の問題もないようです。
未解決のクラスは、実行の最後にtarget/classes/blah-blahフォルダにあります。彼らは明らかに正しい場所にコピーされています。
"継続的な統合"環境では、ソースを一度生成してバージョンコントロールにコミットしてからコードジェネレータを無効にすることをお勧めしますか?あるいは、毎回コードを生成することが可能ですか?人間の介入なしにデータベースの変更を確実に取り込めるようにしますか?
ありがとうございます。しかし、私は "真実の源"を私のデータベーススキーマにしたい。スキーマクラスとモデルクラスの両方を手書きで書くことで、その知識が存在する場所が複数あるようになりました。モデルが定義されている唯一の場所がデータベーススキーマ(またはこの場合はhbm.xmlファイル)であることを確認してください。 – Marvo
注釈を使って作業しましたが、正反対であることがわかりました。本当に見苦しく、コード全体に広がっています。 hbmファイルでは、データベース定義がすべて1か所にあるように感じます。しかし、私はその時点でまだ解決していません。 (私の質問にもかかわらず、あなたの答えを本当に感謝します。) – Marvo
データベーススキーマは、データベース内、またはスキーマの作成に使用されたSQLスクリプト内にあり、hbmファイルにも含まれているため、hbmまたは手作業で生成されたクラスをどのように変更するかはわかりません。同期されていないhbmファイルとjavaファイルが心配な場合は、注釈を使用してください。いずれにしても、すべてが正しく動作することをテストするには、単体テストが必要です。 –