Flyway y Spring Boot con múltiples bases de datos

0
6455

Índice de contenidos

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Slimbook Pro 2 13.3″ (Intel Core i7, 32GB RAM)
  • Sistema Operativo: LUbuntu 18.04
  • Spring Boot 1.5.8.RELEASE

2. Introducción

Cuando en el back estamos trabajando con Spring Boot para un producto que tiene que ser potencialmente desplegable en distintos entornos nos podemos encontrar con distintas bases de datos que integrar con nuestra aplicación.

Flyway es una herramienta de migración de base de datos que nos permite tener un control de versiones de la base de datos y estar seguros de qué versión de base de datos se corresponde con qué versión de la aplicación; de forma que podemos llegar a automatizar no solo el despliegue de la aplicación sino también los cambios requeridos en base de datos para su correcto funcionamiento.

En este tutorial vamos a ver cómo podemos configurar nuestro proyecto gestionado con Maven y Spring Boot para permitir a Flyway trabajar con distintas bases de datos.

3. Vamos al lío

Para integrar Flyway con nuestro proyecto de Spring Boot solo tenemos que añadir la siguiente dependencia al pom.xml

    org.flywaydb
    flyway-core

Como todo en Spring Boot, es decir por convención, Spring Boot va a buscar los ficheros de migración de Flyway dentro de la ruta src/main/resources/db/migrations, esto está muy bien cuando trabajamos con una sola base de datos, pero si queremos trabajar con más de una esta configuración no nos vale.

Por tanto necesitamos cambiar esta convención, para lo cual editamos el fichero application.properties de nuestro proyecto y añadimos la propiedad flyway.locations indicando el vendor con un placeholder. También podemos determinar si queremos habilitar o no flyway con la propiedad flyway.enabled

flyway.enabled=true
flyway.locations=classpath:/db/migration/{vendor}/

De esta forma ahora dentro de la carpeta migration podemos tener todas las carpetas de vendor que queramos (MySQL, Oracle, PostgreSQL, …) podemos deducir el identificador en la siguiente clase: DatabaseDriver

Ahora Spring Boot y Flyway de forma automática cuando detecten que la base de datos objetivo es de un determinado vendor, irán a la correspondiente carpeta a aplicar los ficheros de changelogs que estén determinados. La forma de estos ficheros la explica muy bien nuestro compañero Yair Segura en este tutorial.

4. Conclusiones

Gracias a Spring Boot la configuración para hacer que Flyway nos pueda servir para soportar distintas bases de datos es muy sencilla, lo realmente complicado es mantener nuestras queries SQL compatibles con la mayoría de gestores de bases de datos y no hacer uso de los atajos que nos proporcionan alguno de ellos y que lo hacen incompatibles con el resto.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad