Inicialización con Hibernate

Hablamos de la inicialización del esquema de base de datos. Cuando creamos una aplicación es muy habitual actualizar nuestras entidades al comienzo. Durante esta fase es muy útil poder actualizar la estructura de nuestra base de datos, y Spring proporciona algunas herramientas que nos ayudan a lograr esto.

Propiedad spring.jpa.hibernate.ddl-auto

Esta propiedad permite customizar el comportamiento de la inicialización de Hibernate. Le dice a Hibernate que cambios debería hacer sobre nuestro esquema automáticamente. Las opciones disponibles son:
  • create: drop todas las tablas de las entidades que se crearon, y las crea de nuevo cuando la aplicación arranca.
  • create-drop: drop todas las tablas cada vez que paramos la aplicación, y las crea cuando arrancamos. Suele ser usado para test unitarios ya que deja la base de datos limpia en cada ejecución. Este es el valor por defecto en base de datos in-memory como H2.
  • update: compara el esquema actual con el nuevo para buscar diferencias y aplicarlas.
  • validate: pide a Hibernate que chequee si las tablas y columnas existen, y en caso contratio devuelve una excepción
  • none: no hace nada, y esta es la opción por defecto con bases de datos externas
Si además queremos ver que queries se han ejecutado durante este proceso podemos añadir la siguiente anotación:
Estas opciones no son utilizadas son utilizadas básicamente en entornos de desarollo, y son especialmente útiles para las pruebas unitarias, ya que nos permite ejecutarlas sobre una base de datos limpia.

La mejor manera para tener separado nuestro DataSource de pruebas es crear un fichero de propiedades separado para ello [ project root/src/test/resources ].

Comentarios

Entradas populares de este blog

Django REST framework

Envío de checkboxes o selector multiple por AJAX con jQuery

Django: relaciones polimórficas