Hibernateマッピングを備えたクラスからデータベーススキーマを生成する簡単なワークフローはありますか?

StackOverflow https://stackoverflow.com/questions/3674322

  •  01-10-2019
  •  | 
  •  

質問

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クラスの注釈付きクラス)を生成します。 hbm2hbmxmlhbm2java .

  • ミドルアウト: Hibernate XMLマッピングの作成を開始し、DDLとJavaクラスを生成します hbm2ddlhbm2java それぞれ。

  • 真ん中に会う: 既存のJavaモデルと既存のデータベースがあります。 Hibernate Toolingはここではあまり役に立たないので、マッピングを手作業で作成し、データベースまたはJavaコードのリファクタリングを行うか、ある種のブリッジを使用する必要があります。これは最悪の状況です。

そのため、私たちが見たように、Hibernateはいくつかのワークフローをサポートし、それらにツールを提供します。そしてあなたの場合、あなたは呼ばれるツールを探しています hbm2ddl (としても知られている SchemaExport, 、それを実装するクラスの名前です)。それを使用する方法はいくつかあります:

  • 実行できます SchemaExport プログラムで。
  • スキーマの自動エクスポートを有効にすることができます SessionFactory プロパティを設定することによる作成時間 hibernate.hbm2ddl.auto 適切な値に
  • 使用できます <hbm2ddl> アリタスク

参照

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top