¿Cuáles son los posibles valores de la configuración de Hibernate hbm2ddl.auto y qué hacen?

Resuelto asked hace 15 años • 0 respuestas

Realmente quiero saber más sobre la actualización, la exportación y los valores que se le podrían dar. ¿ hibernate.hbm2ddl.auto
Necesito saber cuándo usar la actualización y cuándo no? ¿Y cuál es la alternativa?

Estos son cambios que podrían ocurrir en la base de datos:

  • nuevas mesas
  • nuevas columnas en tablas antiguas
  • columnas eliminadas
  • tipo de datos de una columna cambió
  • un tipo de columna cambió sus atributos
  • mesas caídas
  • los valores de una columna cambiaron

¿En cada caso cuál es la mejor solución?

 avatar Jan 13 '09 13:01
Aceptado

De la documentación de la comunidad :

hibernate.hbm2ddl.auto Valida o exporta automáticamente el esquema DDL a la base de datos cuando se crea SessionFactory. Con create-drop, el esquema de la base de datos se eliminará cuando SessionFactory se cierre explícitamente.

por ejemplo, validar | actualización | crear | crear-soltar

Entonces la lista de posibles opciones es,

  • validar : valida el esquema, no realiza cambios en la base de datos.
  • create-only : se generará la creación de la base de datos.
  • drop : se generará el drop de la base de datos.
  • actualizar : actualiza el esquema.
  • crear : crea el esquema, destruyendo los datos anteriores.
  • create-drop : elimina el esquema cuando SessionFactory se cierra explícitamente, normalmente cuando se detiene la aplicación.
  • none : no hace nada con el esquema, no realiza cambios en la base de datos

Estas opciones parecen estar destinadas a ser herramientas para desarrolladores y no a facilitar bases de datos de nivel de producción; es posible que desee consultar la siguiente pregunta; Hibernar: hbm2ddl.auto=¿actualización en producción?

James McMahon avatar Nov 06 '2009 19:11 James McMahon

También existe el valor de nonedesactivarlo por completo.

Michiel Verkaik avatar Jun 08 '2012 14:06 Michiel Verkaik

La propiedad de configuración se llamahibernate.hbm2ddl.auto

En nuestro entorno de desarrollo, configuramos hibernate.hbm2ddl.auto=create-droppara eliminar y crear una base de datos limpia cada vez que implementamos, para que nuestra base de datos esté en un estado conocido.

En teoría, puede configurar hibernate.hbm2ddl.auto=updatela actualización de su base de datos con cambios en su modelo, pero no confiaría en eso en una base de datos de producción. Una versión anterior de la documentación decía que esto era al menos experimental; No sé el estado actual.

Por lo tanto, para nuestra base de datos de producción, no lo configure hibernate.hbm2ddl.auto; el valor predeterminado es no realizar cambios en la base de datos. En su lugar, creamos manualmente un script de actualización SQL DDL que aplica cambios de una versión a la siguiente.

Peter Hilton avatar Jan 13 '2009 08:01 Peter Hilton

En primer lugar, los valores posibles para la hbm2ddlpropiedad de configuración son los siguientes:

  • none- No se realiza ninguna acción. El esquema no se generará.
  • create-only- Se generará el esquema de la base de datos.
  • drop- Se eliminará el esquema de la base de datos.
  • create- El esquema de la base de datos se eliminará y se creará posteriormente.
  • create-drop- El esquema de la base de datos se eliminará y se creará posteriormente. Al cerrar SessionFactory, se eliminará el esquema de la base de datos.
  • validate- El esquema de la base de datos se validará utilizando las asignaciones de entidades.
  • update- El esquema de la base de datos se actualizará comparando el esquema de la base de datos existente con las asignaciones de entidades.

Es hibernate.hbm2ddl.auto="update"conveniente pero menos flexible si planea agregar funciones o ejecutar algunos scripts personalizados.

Entonces, el enfoque más flexible es utilizar Flyway .

Sin embargo, incluso si usa Flyway, aún puede generar el script de migración inicial usando hbm2ddl.

Vlad Mihalcea avatar May 15 '2014 12:05 Vlad Mihalcea