Hibernate hbm2ddl.autoの設定値とその役割について

アップデート、エクスポート、hibernate.hbm2ddl.auto<br&gt.に与えられる値について、もっと知りたいのです。 updateを使うときと使わないときを知りたいのですが?また、代替手段は何ですか?

これらは、DB上で起こりうる変更です。

  • 新しいテーブル
  • 古いテーブルの新しいカラム
  • カラムの削除
  • カラムのデータ型の変更
  • カラムの属性が変更されました。
  • テーブルが削除されました
  • カラムの値が変更された

それぞれのケースで、どのような解決策が最適でしょうか?

コミュニティ・ドキュメント]1より。

hibernate.hbm2ddl.auto SessionFactoryが作成されたときに、自動的にスキーマDDLを検証するか、データベースにエクスポートします。create-dropでは、SessionFactoryが明示的にクローズされたときに、データベーススキーマがドロップされます。

例:バリデート|アップデート|クリエイト|クリエイトドロップ

つまり、可能なオプションのリストは

  • valididate*:スキーマを検証し、データベースに変更を加えません。
  • update:スキーマを更新します。
  • create*: スキーマを作成し、以前のデータを破棄します。
  • create-drop*:SessionFactoryが明示的にクローズされたときにスキーマをドロップします(通常はアプリケーションの停止時)。

これらのオプションは、開発者向けのツールであり、本番レベルのデータベースを容易にするものではないと思われますので、次の質問を参照してください。

解説 (13)

構成プロパティは、hibernate.hbm2ddl.autoという名前です。

開発環境では、hibernate.hbm2ddl.auto=creat-dropを設定して、デプロイするたびにクリーンなデータベースをドロップして作成し、データベースが既知の状態になるようにしています。

理論的には、hibernate.hbm2ddl.auto=updateを設定して、モデルへの変更でデータベースを更新することができますが、本番のデータベースでは信用できません。以前のバージョンのドキュメントでは、これは少なくとも実験的なものであるとされていましたが、現在の状況はわかりません。

ですから、私たちの本番データベースでは、hibernate.hbm2ddl.autoを設定しないでください。デフォルトでは、データベースに変更を加えません。代わりに、あるバージョンから次のバージョンへの変更を適用する SQL DDL 更新スクリプトを手動で作成しています。

解説 (3)

私は、dbの更新にはliquibaseを使うと思います。 hibernate'のスキーマ更新機能は、開発者が新機能を開発している間だけ使えます。本番環境では、データベースのアップグレードはより慎重に行う必要があります。

解説 (1)