java - update - ¿Cómo desactivar hbm2ddl?
property name hbm2ddl auto (6)
Esta propiedad no es requerida. Simplemente borre completamente la entrada hibernate.hbm2ddl.auto
del archivo xml.
No pude encontrar una referencia sobre cómo desactivar hbm2ddl.
Para aclarar esto, uno debe buscar en la fuente de org.hibernate.cfg.SettingsFactory
(es posible que vea algo más dependiendo de la versión utilizada):
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 );
}
En la clase org.hibernate.cfg.Settings
esas variables se inicializan como:
private boolean autoCreateSchema;
private boolean autoDropSchema;
private boolean autoUpdateSchema;
private boolean autoValidateSchema;
entonces estos valores predeterminados son falsos.
La omisión de la configuración hibernate.hbm2ddl.auto
debe desactivar la funcionalidad HBM2DDL_AUTO
como hibernate.hbm2ddl.auto = none
sugerida, pero en este último caso HBM2DDL_AUTO
una advertencia en el registro.
Puedes desactivarlo por:
hibernate.hbm2ddl.auto=none
¡No está documentado pero no tiene precio!
Si ingresa un valor no admitido, le dirá cuáles son compatibles: ohbiSessionFactoryBuilderImpl : Unrecognized hbm2ddl_auto value : bla. Supported values include ''create'', ''create-drop'', ''update'', ''none'' and ''validate''. Ignoring
ohbiSessionFactoryBuilderImpl : Unrecognized hbm2ddl_auto value : bla. Supported values include ''create'', ''create-drop'', ''update'', ''none'' and ''validate''. Ignoring
Y el valor none
es el predeterminado, está oficialmente admitido y documentado: https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html#configurations-hbmddl
en hibernate.properties
hibernate.hbm2ddl.auto=validate
Por supuesto, el lugar para configurarlo depende de la forma en que configure su hibernación; si es programáticamente, establezca la propiedad allí. Si es de hibernate.cfg.xml:
<property name="hibernate.hbm2ddl.auto">validate</property>
Solo se omite hibernate.hbm2ddl.auto
predeterminada en Hibernate y no se hace nada. De la documentación de referencia:
1.1.4. Configuración de hibernación
La opción
hbm2ddl.auto
activa la generación automática de esquemas de base de datos directamente en la base de datos. Esto también puede desactivarse eliminando la opción de configuración , o redirigirse a un archivo con la ayuda de la tarea Ant de SchemaExport.
Establecer hbm2ddl.auto
en none
( none
documentado) podría generar una advertencia, como: org.hibernate.cfg.SettingsFactory - Unrecognized value for "hibernate.hbm2ddl.auto": none