Para el registro, la spring.jpa.hibernate.ddl-auto
propiedad es la primavera de datos JPA específico y es su forma de especificar un valor que con el tiempo se pasó a Hibernate bajo la propiedad se sabe, hibernate.hbm2ddl.auto
.
Los valores create
, create-drop
, validate
, y update
, básicamente, influyen en cómo la gestión de herramientas esquema manipulará el esquema de base de datos en el inicio.
Por ejemplo, la update
operación consultará la API del controlador JDBC para obtener los metadatos de la base de datos y luego Hibernate compara el modelo de objeto que crea basándose en la lectura de sus clases anotadas o asignaciones XML de HBM e intentará ajustar el esquema sobre la marcha.
La update
operación, por ejemplo, intentará agregar nuevas columnas, restricciones, etc., pero nunca eliminará una columna o restricción que puede haber existido anteriormente pero que ya no forma parte del modelo de objeto de una ejecución anterior.
Por lo general, en los escenarios de casos de prueba, es probable create-drop
que lo use para crear su esquema, su caso de prueba agrega algunos datos simulados, ejecuta sus pruebas y luego, durante la limpieza del caso de prueba, los objetos de esquema se eliminan, dejando una base de datos vacía.
En desarrollo, a menudo es común ver que los desarrolladores update
modifican automáticamente el esquema para agregar nuevas adiciones al reiniciar. Pero, nuevamente, comprenda que esto no elimina una columna o restricción que pueda existir de ejecuciones anteriores que ya no sea necesaria.
En producción, a menudo se recomienda encarecidamente utilizar none
o simplemente no especificar esta propiedad. Esto se debe a que es una práctica común que los administradores de bases de datos revisen los scripts de migración para detectar cambios en la base de datos, especialmente si su base de datos se comparte entre varios servicios y aplicaciones.
none
pero es posible que desee que sus tablas de búsqueda de Hibernate y Envers se generen utilizando,update
ya que esos proyectos las administran internamente y no desea administrarlas manualmente usted mismo. En este momento controlamos esto globalmente para todas las tablas, independientemente de su origen / fuente. Esta sería una razón más para usar opciones específicas del proveedor si quisiera usar esto.