オブジェクトを定義してから、hibernate を使用して、これから ddl を生成したいと思います。しかし、休止状態での唯一の実際のワークフローは、データベース スキーマを生成し、それをリバース エンジニアリングすることのようです。意味のないことをしたいですか?
2 に答える
はい、プロパティがありますhibernate.hbm2ddl.auto
。ドキュメントには次のように記載されています。
SessionFactory の作成時にスキーマ DDL を自動的に検証またはデータベースにエクスポートします。create-drop を使用すると、SessionFactory が明示的に閉じられると、データベース スキーマが削除されます。
例: 検証 | アップデート | 作成 | 作成ドロップ
の設定方法に応じて、このプロパティを定義する方法は複数ありますSessionFactory
。休止状態の方法は、単純に追加することです:
<property name="hibernate.hbm2ddl.auto">update</property>
しかし、休止状態での唯一の実際のワークフローは、データベース スキーマを生成し、それをリバース エンジニアリングすることのようです。
いいえ、絶対に違います。歴史的に、Hibernate はいくつかのアプローチをサポートしています。
トップダウン:オブジェクト モデルから開始し、XML ファイルまたは注釈を使用してマッピング メタデータを作成し、Hibernate の
hbm2ddl
ツールを使用してスキーマを生成します。ボトムアップ:
hbm2hbmxml
既存のデータベースから開始し、および を使用して、データベース スキーマからマッピングと Java クラス (または単にアノテーションを付けた Java クラス) を生成しますhbm2java
。中間:
hbm2ddl
Hibernate XML マッピングの記述を開始し、それぞれ およびを使用して DDL および Java クラスを生成しhbm2java
ます。中間で会う:既存の Java モデルと既存のデータベースがあります。ここでは Hibernate ツールはあまり役に立ちません。手動でマッピングを記述し、データベースまたは Java コードのリファクタリングを行うか、何らかのブリッジを使用する必要があります。これは最悪の状況です。
このように、Hibernate はいくつかのワークフローをサポートし、それらのためのツールを提供します。そして、あなたの場合、 (それを実装するクラスの名前である とhbm2ddl
も呼ばれる) というツールを探しています。SchemaExport
いくつかの使用方法があります。
- プログラムで実行でき
SchemaExport
ます。 SessionFactory
プロパティhibernate.hbm2ddl.auto
を適切な値に設定することで、作成時にスキーマの自動エクスポートを有効にできます。<hbm2ddl>
Ant タスクを使用できます
参考文献
- Hibernate Core リファレンス ガイド
- Hibernate ツール リファレンス ガイド