私は現在Hibernate Tools 3.1を使用しています。私は命名規則とDAOテンプレートをカスタマイズしました。データベース(SQL Server 2005)の初期段階では、私はマッピング、エンティティ、DAO、構成の再構築を担当しています。テーブルをリバースエンジニアリングする必要があるたびに、アイデンティティの列を調整するようなマッピング(* .hbm.xmlファイル)のすべてのカスタマイズは失われ、で使用されるフィールドを選択するととtoStringになります。私はdiff XMLをファイルに作成し、生成されたマッピング(「my related question」を参照)に「マージ」することを検討していましたが、私は疑問に思っていました...これらの厄介な、やむを得ない重要なタスクに対処するためのベストプラクティス/ツールはありますか?Hibernate Toolsと常に変化するデータベース
答えて
私は継続的なリバースエンジニアリングを強くお勧めします。リバースエンジニアリングは素晴らしいことですが、変更はhbmとデータベースの両方の変更として管理する必要があります。
私たちは移行を使用してdbの変更を管理し、関連する変更をhbmに含めます。もしHibernateがそれを持っているなら(私はそう信じています)、あなたはhbmの代わりに注釈を見たいと思うかもしれません、それらは維持するのがかなり簡単かもしれません。
これは2年半ほど遅れていますが、反対意見を提示します。マッピングファイルに必要なカスタマイズは、hibernate.reveng.xmlファイルまたはカスタムReverseEngineeringStrategyを使用して行うことができます。クラスそのものについては、常にクラスを生成してカスタムコードを含むクラスで拡張する必要があります。
たとえば、com.company.vo.generated.CustomerGeneratedを生成し、com.company.vo.custom.Customerで拡張します。コード生成は生成されたパッケージ内のすべてのクラスを上書きしますが、カスタムパッケージでは決して使用しないでください(必要に応じて空白をコピーしてカスタムディレクトリに貼り付けることができるように、Hibernateツールはこれらのカスタムクラスをターゲットディレクトリに生成できます)。このようにして、カスタムクラスのequals、toStringなどのメソッドをオーバーライドし、再生成時に変更を失うことはありません。また、生成されたコードをSCMにチェックインしないことがベストプラクティスであることにも注意してください。
このサイトには、Maven、Hibernate3プラグイン、およびビルドヘルパープラグインを使用してこれを実現するための素晴らしい例がいくつかあります。これらのほとんどはPascal Thiventの非常に有益な答えを持っています。この方法は私にとって美しく働いています。学習曲線は少しありますが、1つのMavenコマンドでデータベースの変更をアプリに伝えることは素晴らしいことです。
- 1. Hibernate Tools - "version"カラム
- 2. Hibernate Toolsクラスを生成するaacache
- 3. データベースのJavaモニタの変更 - Hibernateとenvers
- 4. hibernateを使ってデータをデータベースに永続化/更新する
- 5. 通常のPostgresデータベースをPostGisデータベースに変換する
- 6. Hibernate Tools:基本クラスを生成する方法は?
- 7. Hibernateセッションの変更がデータベースに永続化されていない
- 8. データベースの正常化の材料/チュートリアル
- 9. javascript code chrome dev toolsを変更する
- 10. jquery-toolsのナビゲーションは常にスクロール可能です
- 11. 自動生成エンティティクラスとhibernate-toolsとのマッピングが行われない
- 12. django-admin-tools:ヘッダを 'Django Administration'に変更
- 13. GileadをGWTとHibernateにグループ化するには
- 14. Hibernate Toolsの設定方法EclipseでカスタムNamingStrategyを使用するHQLエディタ
- 15. jQuery Toolsスクロール可能なプラグインでマウスホイールが異常に動作する
- 16. 列の数が変化するときのデータベースの選択
- 17. Hibernate Transactionもオブジェクトの変更を永続化する
- 18. データベース上のHibernateクエリ
- 19. hibernateオブジェクトとデータベースの物理モデル
- 20. Hibernate EntityManager persist()とデータベース往復回数
- 21. 時間関連の変数に基づいて常に変化するサイントーン
- 22. データベースをマップする(永続化する)ときにエラーが発生する
- 23. Hibernate Tools Indigo:プロパティビューに結果項目が正しく表示されない
- 24. データベースの制約を処理するhibernate
- 25. データベースをHibernateで使用する
- 26. クラスメンバ参照変数を通常の変数のように初期化する
- 27. scala-tools Maven Repo変更:sbt壊れた
- 28. TableAdapter.Updateは常にデータベースに変更を書き込むとは限りません
- 29. jQueryのTOOLS:クラスセレクタとツールヒント?
- 30. データベースから外部キー名を変更すると、hibernateにどのような影響がありますか?
あなたと私の最近の誤操作は、RevEngが最も冷たく務めたと私に確信しました。ありがとうございました。 –