私は現在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. データベースで常に変化するデータを管理する
- 4. データベースのJavaモニタの変更 - Hibernateとenvers
- 5. Phalcon Dev Tools - データベース移行
- 6. hibernateを使ってデータをデータベースに永続化/更新する
- 7. 国際化されたデータベースのHibernateマッピング
- 8. 復号化データベースは常にYES
- 9. Wpfディスパッチャータイマーが異常に変化する
- 10. Hibernate Tools:基本クラスを生成する方法は?
- 11. SpringとHibernate 5. SessionFactory常にnull
- 12. Hibernateセッションの変更がデータベースに永続化されていない
- 13. 通常のPostgresデータベースをPostGisデータベースに変換する
- 14. Hibernateのデータベース変更にリスナーを追加するには?
- 15. Hibernate Tools 5.1.0.Finalを使用している場合のInvocationTargetException。
- 16. Hibernateのセッションファクトリは常にnull
- 17. 自動生成エンティティクラスとhibernate-toolsとのマッピングが行われない
- 18. データベースの正常化の材料/チュートリアル
- 19. javascript code chrome dev toolsを変更する
- 20. jquery-toolsのナビゲーションは常にスクロール可能です
- 21. Hibernate Toolsコンフィグレーションライブラリプロジェクトのエンティティが見つかりません
- 22. django-admin-tools:ヘッダを 'Django Administration'に変更
- 23. Hibernate Junit H2開発データベースのフィールドを変更するメモリデータベーステストケース
- 24. hibernateとcommit()を使用してデータベースにデータを保存する
- 25. GileadをGWTとHibernateにグループ化するには
- 26. 常に変化する数字をコンマでフォーマットする
- 27. Hibernate Toolsの設定方法EclipseでカスタムNamingStrategyを使用するHQLエディタ
- 28. データベースを変更するためにHibernateを妨害する方法
- 29. セット]フィールドHibernateはデータベース
- 30. Java Hibernate H2-sqlデータベース
あなたと私の最近の誤操作は、RevEngが最も冷たく務めたと私に確信しました。ありがとうございました。 –