Spring: migrations y seeders.

Hay muchos beneficios en usar JPA e Hibernate. JPA proporciona cache, mapeado de objetos y gestión de transacciones. También nos permite generar automáticamente clases que ejecutan operaciones CRUD e incluso queries complejas sin mucho código. Pero no todo el mundo o no todos los projectos son amigos de Hibernate. En Spring también podemos inicializar nuestra base de datos sin ello.

Spring intentará ejecutar por defecto dos scripts al arrancar:
  • schema.sql - Crea o actualiza el esquema
  • data.sql - Inicializa o modifica datos de la base de datos
El directorio por defecto para estos ficheros es: src/main/resources

Si queremos proceder con este procedimiento en lugar de Hibernate, tenemos que desactivar Hibernate en la inicialización para evitar conflictos. Seguimos disponiendo de la forma de inicializar nuestra base de datos:

Inicialización basado en plataforma

Podemos proporcionar información adicional en los scripts de inicialización usando el patron de nombraado:
  • schema-${platform}.sql
  • data-${platform}.sql
Esto es muy útil para diferenciar diferentes juegos de datos de nuestros entornos de desarrollo, pruebas, staging o producción. Para controlar cual se ejecuta tenemos la siguiente propiedad:

Comentarios

Entradas populares de este blog

Django REST framework

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

Django: Modelos