Hbm2ddlをオフにする方法に関するリファレンスが見つかりませんでした。
hibernate.hbm2ddl.auto
を省略すると、デフォルトではHibernateが何も実行しません。リファレンスドキュメントから:
1.1.4。Hibernate設定
hbm2ddl.auto
オプションは、データベースへのデータベーススキーマの直接的な自動生成をオンにします。 これは、構成オプションを削除することでオフにすることもできます、またはSchemaExport Antタスクの助けを借りてファイルにリダイレクトします。
hbm2ddl.auto
をnone
(ドキュメントなし)に設定すると、次のような警告が生成される場合があります。org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none
次の方法でオフにできます。
hibernate.hbm2ddl.auto=none
文書化されていませんが、貴重です!
これを明確にするには、org.hibernate.cfg.SettingsFactory
のソースを調べる必要があります(使用しているバージョンによっては、他の何かが表示される場合があります)。
String autoSchemaExport = properties.getProperty( AvailableSettings.HBM2DDL_AUTO );
if ( "validate".equals(autoSchemaExport) ) {
settings.setAutoValidateSchema( true );
}
else if ( "update".equals(autoSchemaExport) ) {
settings.setAutoUpdateSchema( true );
}
else if ( "create".equals(autoSchemaExport) ) {
settings.setAutoCreateSchema( true );
}
else if ( "create-drop".equals( autoSchemaExport ) ) {
settings.setAutoCreateSchema( true );
settings.setAutoDropSchema( true );
}
else if ( !StringHelper.isEmpty( autoSchemaExport ) ) {
LOG.warn( "Unrecognized value for \"hibernate.hbm2ddl.auto\": " + autoSchemaExport );
}
org.hibernate.cfg.Settings
クラスでは、これらの変数は次のように初期化されます。
private boolean autoCreateSchema;
private boolean autoDropSchema;
private boolean autoUpdateSchema;
private boolean autoValidateSchema;
したがって、これらのデフォルトはfalseです。
hibernate.hbm2ddl.auto
設定を省略すると、HBM2DDL_AUTO
が推奨されるようにhibernate.hbm2ddl.auto = none
機能がオフになりますが、後者の場合、ログに警告が表示されます。
hibernate.propertiesで
hibernate.hbm2ddl.auto=validate
もちろん、それを設定する場所は、休止状態の設定方法によって異なります。プログラムで設定する場合は、そこにプロパティを設定します。 hibernate.cfg.xmlからの場合:
<property name="hibernate.hbm2ddl.auto">validate</property>
サポートされていない値を入力すると、サポートされている値が表示されます:o.h.b.i.SessionFactoryBuilderImpl : Unrecognized hbm2ddl_auto value : bla. Supported values include 'create', 'create-drop', 'update', 'none' and 'validate'. Ignoring
値none
がデフォルトであり、公式にサポートおよび文書化されています: https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#configurations-hbmddl
このプロパティは必須ではありません。 hibernate.hbm2ddl.auto
完全にxmlファイルからのエントリ。