web-dev-qa-db-ja.com

Hibernate hbm2ddl.auto、可能な値、およびそれらが行うこと

休止状態を見ていますhbm2ddl.auto構成プロパティとその可能な値:

  • validate
  • update
  • create
  • create-drop

これらのすべての値は何をしますか?

Hibernate Reference Documentation は、create-drop、しかし他の値については何も言わない:

hibernate.hbm2ddl.auto

SessionFactoryの作成時に、スキーマDDLをデータベースに自動的に検証またはエクスポートします。 create-dropSessionFactoryが明示的に閉じられると、データベーススキーマは削除されます。

e.g。validate | update | create | create-drop

私はこれらのスタックオーバーフローの質問で非常に有用な説明を見つけました:

しかし、公式文書にはまだ何もありません。

39

あなたが提供したリンクはすでに公式文書です。したがって、今日の時点で公式かつ包括的なものはありません。

だから私はあなたの質問に対する答えは2つあると思います:

これはあなたが夢見ていた完璧な答えではないことは知っていますが、実際には今日これがすべてです。

しかし、良いニュースは、プロジェクトがオープンソースであるため、改善に必要なものがすべて揃っていることです:-)。

11
Baptiste Mathus

ために hbm2ddl.autoプロパティ可能なオプションのリストは次のとおりです。

  • validate:スキーマが一致することを検証し、データベースのスキーマに変更を加えません。これはおそらく本番用に必要です。
  • 更新:永続化されているエンティティを反映するようにスキーマを更新します
  • create:エンティティに必要なスキーマを作成し、以前のデータを破棄します。
  • create-drop:上記のcreateのようにスキーマを作成しますが、セッションの最後にスキーマを削除します。これは初期の開発やテストに最適です。
62
wahid_cse

この情報が含まれるようにドキュメントが更新されました。ここに、この機能の公式の現在の ドキュメント へのリンクがあります。

hibernate.hbm2ddl.auto(例:none(デフォルト値)、作成のみ、ドロップ、作成、作成ドロップ、検証、更新)

SessionFactoryライフサイクルの一部としてSchemaManagementToolアクションを自動的に実行するための設定。有効なオプションは、Action列挙型のexternalHbm2ddlName値によって定義されます。

none
    No action will be performed.

create-only
    Database creation will be generated.

drop
    Database dropping will be generated.

create
    Database dropping will be generated followed by database creation.

create-drop
    Drop the schema and recreate it on SessionFactory startup. Additionally, drop the schema on SessionFactory shutdown.

validate
    Validate the database schema

update
    Update the database schema
2
Joel Harris