web-dev-qa-db-ja.com

hbm2ddlをオフにする方法は?

Hbm2ddlをオフにする方法に関するリファレンスが見つかりませんでした。

56
Alex

hibernate.hbm2ddl.autoを省略すると、デフォルトではHibernateが何も実行しません。リファレンスドキュメントから:

1.1.4。Hibernate設定

hbm2ddl.autoオプションは、データベースへのデータベーススキーマの直接的な自動生成をオンにします。 これは、構成オプションを削除することでオフにすることもできます、またはSchemaExport Antタスクの助けを借りてファイルにリダイレクトします。

hbm2ddl.autonone(ドキュメントなし)に設定すると、次のような警告が生成される場合があります。org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none

76
Pascal Thivent

次の方法でオフにできます。

hibernate.hbm2ddl.auto=none

文書化されていませんが、貴重です!

35

これを明確にするには、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機能がオフになりますが、後者の場合、ログに警告が表示されます。

11

hibernate.propertiesで

hibernate.hbm2ddl.auto=validate

もちろん、それを設定する場所は、休止状態の設定方法によって異なります。プログラムで設定する場合は、そこにプロパティを設定します。 hibernate.cfg.xmlからの場合:

<property name="hibernate.hbm2ddl.auto">validate</property>
5
Bozho

サポートされていない値を入力すると、サポートされている値が表示されます: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

3
jstadler

このプロパティは必須ではありません。 hibernate.hbm2ddl.auto完全にxmlファイルからのエントリ。

0
gdrt