Foto de los creadores de campaña en Unsplash
En esta historia, vamos a desarrollar una aplicación SpringBoot que gestiona una instancia de MariaDB con la ayuda de Liquibase.
Supongamos el caso de uso simple a continuación.
Queremos modelar dos entidades: Estudiante y Examen . Cada estudiante puede tomar uno o más exámenes con la calificación correspondiente.
Tenga en cuenta que, obviamente, este ER-Diagram es solo un modelo trivial para profundizar rápidamente en la práctica.

Visión de conjunto

Liquibase proporciona una forma independiente de la base de datos para ofrecer una implementación de base de datos rápida, segura y repetible en liquibase.org
Los cambios en la base de datos se almacenan en archivos XML, YAML, JSON o SQL identificados por una combinación de etiquetas de identificación y autor, así como el nombre del archivo en sí.
Liquibase, además de nuestras tablas, crea automáticamente tablas DatabaseChangeLog y DatabaseChangeLogLock cuando ejecuta por primera vez un archivo changeLog.
Definitivamente, Liquibase se basa en un mecanismo simple
  1. Utiliza un registro de cambios para enumerar explícitamente los cambios en la base de datos en un orden específico. Cada cambio en el registro de cambios es un conjunto de cambios .
  2. Utiliza una tabla de seguimiento (el DatabaseChangeLog anterior) que reside en cada base de datos y que rastrea qué conjuntos de cambios en el registro de cambios se han implementado.
Entonces, con este tipo de libro mayor, Liquibase puede rastrear y versionar los cambios de la base de datos y, además, puede implementar cambios específicos comparando lo que está en el libro mayor con lo que está en la tabla de seguimiento.

Inicio rápido de SpringBoot

Vamos a profundizar y ver cómo implementar una aplicación SpringBoot con Liquibase.
Abra una terminal de línea de comandos, navegue a su ruta preferida y cree el proyecto maven. El siguiente comando crea un proyecto maven limpio.
arquetipo mvn: generar 
-DgroupId = com.pck.app -DartifactId = aplicación 
-DarchetypeArtifactId = maven-archetype-quickstart -DarchetypeVersion = 1.4 -DinteractiveMode = false
Abra el archivo pom.xml y pegue el código fuente proporcionado para crear la aplicación SpringBoot que importa los controladores Jpa, MariaDB y Liquibase.
El principal App.class se convierte en ...
... habilitando los repositorios Jpa.
¿Qué tenemos que hacer ahora?
Tenemos que crear la carpeta de recursos . Dentro, el archivo application.properties y una carpeta llamada changelog . Dentro de la última carpeta, tenemos que crear otro directorio llamado cambios y el archivo maestro de registro de cambios .
Puede ver la jerarquía completa en la imagen a continuación.
Para tener una visión más amplia de las posibilidades que ofrece Liquibase, vamos a utilizar dos tipos de archivo de cambios. El primero como XML, mientras que el último como SQL.
Por otro lado, db.changelog-master.yaml le dice a Liquibase dónde se almacenan los archivos de cambios. En este caso, el archivo YAML será
databaseChangeLog: 
  - includeAll: 
      ruta: db / changelog / changes /
Liquibase ejecutará solo los archivos almacenados en la ruta debajo de la opción –includeAll .
Eche un vistazo rápido al archivo application.properties
server.port = 8080 

spring.datasource.url = jdbc: mariadb: // localhost: 3306 / liquibase? allowMultiQueries = true 
spring.datasource.username = root 
spring.datasource.password = admin 

spring.jpa.properties.hibernate.temp. use_jdbc_metadata_defaults = false 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MariaDB103Dialect 

spring.jpa.hibernate.ddl-auto = none
Observe cómo con MariaDB, se necesita la opción allowMultiQueries = true para ejecutar con éxito múltiples consultas.
Tenga cuidado con el tipo de dialecto que está utilizando. A partir de la versión 10.3 y posteriores, debe usar org.hibernate.dialect.MariaDB103Dialect que también proporciona soporte de secuencia.
Una vez que hayamos terminado de administrar estas configuraciones, podemos profundizar en la sintaxis del archivo de cambios.
Comencemos con el archivo XML llamado v_0.0.1.xml . Este archivo se utiliza para crear la estructura base de nuestra base de datos.
Y luego, eche un vistazo al segundo archivo llamado v_0.0.2.sql que se usa para crear secuencias e insertar valores en las tablas.
Ahora, simplemente cree una base de datos liquibase con la conexión MariaDB y ejecute la aplicación SpringBoot.
Finalmente, lo hemos hecho!
Al final, a continuación, aquí está la base de datos generada y las tablas.