初めて休止状態でデータベーススキーマを作成したい。さらに、新しいテーブルの追加や一部の列の削除など、スキーマに変更がある場合は、以前のデータを保持したまま既存のスキーマを更新します。
この質問 で指定されたオプションに従って、以前のデータを破壊するスキーマを作成するか、スキーマを更新することができます。
両方を実行できる値はありますか?
実際にチェックしたところ<property name="hibernate.hbm2ddl.auto" value="update" />
は、初めてテーブルを作成し、その後、テーブル/スキーマが存在する場合は更新します。
Update
プロパティは、新しいモデルを開始または追加するときに適用できます。以前に保存したエンティティインスタンスを保持したい。これは、デフォルトのスキーマ作成スタイルです。
必要に応じて、スキーマを更新しようとします。以下の更新がサポートされています。
私の観察のいくつかを見てください
'import.sql'を使用できます。
次のように、リソースにimport.sqlファイルを追加します。
/*create database at first time*/
CREATE SCHEMA your-database-name;
次のように「hibernate.cfg.xml」に行を追加します。
<hibernate-configuration>
<session-factory>
...
...
<property name="hbm2ddl.import_files">import.sql</property>
...
...
</session-factory>
</hibernate-configuration>
したがって、データベースが存在しない場合、hibernateは新しいdbを作成します。
エンティティの変更に基づいてdbスキーマを更新することはお勧めしません。 Flyway または Liquibase で試してください。 Stackoverflowで同様の質問を見つけることができます。 Hibernate/JPA DBスキーマ生成のベストプラクティス