Flyway para Java: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a Flyway: qué es y para qué sirve

\n\n

Flyway es una biblioteca para la gestión de versiones y migraciones de bases de datos (Database Migration Tool). En el desarrollo de software moderno, especialmente en el trabajo en equipo y al usar metodologías CI/CD, surge la necesidad crítica de sincronizar la estructura de la base de datos entre desarrolladores, entornos de prueba y producción. Flyway resuelve este problema permitiendo describir los cambios del esquema de la BD (creación de tablas, adición de columnas, índices, disparadores, etc.) como scripts SQL secuenciales y versionados o clases Java.

\n\n

El concepto principal de Flyway es simple: cada migración tiene un número de versión único (por ejemplo, V1, V2, V3) y se ejecuta una sola vez. La biblioteca rastrea qué migraciones ya se han aplicado a una base de datos específica, utilizando una tabla especial (por defecto flyway_schema_history). Esto garantiza la idempotencia y la reproducibilidad del estado de la base de datos.

\n\n

¿Para qué usar Flyway?

\n
    \n
  • Versionado del esquema: Cada cambio en la base de datos es una versión separada que se puede revertir o aplicar.
  • \n
  • Automatización: Integración con Maven, Gradle, Spring Boot y pipelines CI/CD.
  • \n
  • Control de integridad: Flyway verifica las sumas de verificación de las migraciones, evitando cambios accidentales en scripts ya ejecutados.
  • \n
  • Simplicidad: Para la mayoría de las tareas, basta con escribir un script SQL normal.
  • \n
\n\n

Instalación de Flyway para Java

\n\n

Flyway no se instala a través de pip o npm, ya que es una biblioteca Java. Existen varias formas de agregarla a un proyecto:

\n\n

1. Maven (pom.xml)

\n
<dependency>\n    <groupId>org.flywaydb</groupId>\n    <artifactId>flyway-core</artifactId>\n    <version>9.22.3</version> <!-- Versión actual al momento de escribir -->\n</dependency>\n\n<!-- Controlador para su BD, por ejemplo PostgreSQL -->\n<dependency>\n    <groupId>org.postgresql</groupId>\n    <artifactId>postgresql</artifactId>\n    <version>42.7.1</version>\n</dependency>
\n\n

2. Gradle (build.gradle)

\n
implementation 'org.flywaydb:flyway-core:9.22.3'\nimplementation 'org.postgresql:postgresql:42.7.1'
\n\n

3. Plugin de Maven (para ejecutar desde la línea de comandos)

\n
<plugin>\n    <groupId>org.flywaydb</groupId>\n    <artifactId>flyway-maven-plugin</artifactId>\n    <version>9.22.3</version>\n    <configuration>\n        <url>jdbc:postgresql://localhost:5432/mydb</url>\n        <user>myuser</user>\n        <password>mypassword</password>\n    </configuration>\n</plugin>
\n\n

4. Spring Boot (configuración automática)

\n

Si usa Spring Boot, basta con agregar la dependencia y configurar los parámetros en application.properties:

\n
spring.flyway.enabled=true\nspring.flyway.locations=classpath:db/migration\nspring.datasource.url=jdbc:postgresql://localhost:5432/mydb\nspring.datasource.username=myuser\nspring.datasource.password=mypassword
\n\n

Inicio rápido con ejemplo de código

\n\n

Veamos un ejemplo mínimo de uso de Flyway en una aplicación Java para crear la tabla users.

\n\n

Paso 1: Cree la estructura de directorios para las migraciones

\n

Por defecto, Flyway busca scripts SQL en la carpeta db/migration en el classpath (por ejemplo, src/main/resources/db/migration).

\n\n

Paso 2: Cree el archivo de migración

\n

Cree el archivo V1__Create_users_table.sql en esta carpeta:

\n
CREATE TABLE users (\n    id SERIAL PRIMARY KEY,\n    username VARCHAR(50) NOT NULL UNIQUE,\n    email VARCHAR(10                    

Recommendations