Как отключить hbm2ddl? - PullRequest
       8

Как отключить hbm2ddl?

56 голосов
/ 05 июля 2010

Я не смог найти справку о том, как отключить hbm2ddl.

Ответы [ 6 ]

76 голосов
/ 05 июля 2010

Просто опуская hibernate.hbm2ddl.auto, по умолчанию Hibernate ничего не делает.Из справочной документации:

1.1.4.Конфигурация Hibernate

Опция hbm2ddl.auto включает автоматическое создание схем базы данных непосредственно в базе данных. Это также можно отключить, удалив параметр конфигурации или перенаправив в файл с помощью задачи Ant SchemaExport.

Установка hbm2ddl.auto в none (недокументированное) может генерировать предупреждение, например: org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none

35 голосов
/ 04 апреля 2013

Вы можете отключить его:

hibernate.hbm2ddl.auto=none

Это без документов, но бесценно!

11 голосов
/ 15 октября 2014

Чтобы понять это, нужно взглянуть на источник 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, но в последнем случаевы получаете предупреждение в журнале.

5 голосов
/ 05 июля 2010

в hibernate.properties

hibernate.hbm2ddl.auto=validate

Конечно, место для его настройки зависит от того, как вы конфигурируете свой спящий режим - если это программно, установите свойство там. Если это из hibernate.cfg.xml:

<property name="hibernate.hbm2ddl.auto">validate</property>
3 голосов
/ 24 апреля 2018

Если вы введете неподдерживаемое значение, оно сообщит вам, какие из них поддерживаются: 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

0 голосов
/ 23 февраля 2018

Эта недвижимость не обязательна. Просто полностью удалите запись hibernate.hbm2ddl.auto из XML-файла.

...