Hibernateマッピングを備えたクラスからデータベーススキーマを生成する簡単なワークフローはありますか?
質問
IDは自分のオブジェクトを定義し、Hibernateを使用してこれからDDLを生成します。しかし、Hibernateを使用した唯一の実際のワークフローは、Datbaseスキーマを生成し、リバースエンジニアリングすることです。意味のないことをしたいですか?
解決
はい、プロパティがあります hibernate.hbm2ddl.auto
. 。 ドキュメンテーション 言う:
SessionFactoryが作成されたときに、Schema DDLをデータベースに自動的に検証またはエクスポートします。 Create-Dropを使用すると、SessionFactoryが明示的に閉じられると、データベーススキーマが削除されます。
例:検証|更新|作成|ドロップを作成します
このプロパティを定義する方法は複数あります。 SessionFactory
. 。 Hibernateの方法は、単に追加することです。
<property name="hibernate.hbm2ddl.auto">update</property>
他のヒント
しかし、Hibernateを使用した唯一の実際のワークフローは、データベーススキーマを生成し、リバースエンジニアリングすることです。
いいえ、絶対にそうではありません。歴史的に、Hibernateはいくつかのアプローチをサポートしています。
トップダウン: オブジェクトモデルから始めてから、XMLファイルまたはアノテーションを使用してメタダタをマッピングしてから、hibernateを使用してスキーマを生成します
hbm2ddl
道具。一気飲み: 既存のデータベースから始めて、データベーススキーマからマッピングとJavaクラス(またはJavaクラスの注釈付きクラス)を生成します。
hbm2hbmxml
とhbm2java
.ミドルアウト: Hibernate XMLマッピングの作成を開始し、DDLとJavaクラスを生成します
hbm2ddl
とhbm2java
それぞれ。真ん中に会う: 既存のJavaモデルと既存のデータベースがあります。 Hibernate Toolingはここではあまり役に立たないので、マッピングを手作業で作成し、データベースまたはJavaコードのリファクタリングを行うか、ある種のブリッジを使用する必要があります。これは最悪の状況です。
そのため、私たちが見たように、Hibernateはいくつかのワークフローをサポートし、それらにツールを提供します。そしてあなたの場合、あなたは呼ばれるツールを探しています hbm2ddl
(としても知られている SchemaExport
, 、それを実装するクラスの名前です)。それを使用する方法はいくつかあります:
- 実行できます
SchemaExport
プログラムで。 - スキーマの自動エクスポートを有効にすることができます
SessionFactory
プロパティを設定することによる作成時間hibernate.hbm2ddl.auto
適切な値に - 使用できます
<hbm2ddl>
アリタスク
参照
- Hibernateコアリファレンスガイド
- Hibernate Toolsリファレンスガイド