values update property name hbm2ddl_auto drop create java hibernate orm hbm2ddl

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