Flyway para Java: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução ao Flyway: o que é e para que serve

\n\n

Flyway é uma biblioteca para gerenciamento de versões e migrações de bancos de dados (Database Migration Tool). No desenvolvimento moderno de software, especialmente no trabalho em equipe e no uso de metodologias CI/CD, surge a necessidade crítica de sincronizar a estrutura do banco de dados entre desenvolvedores, ambientes de teste e produção. O Flyway resolve esse problema, permitindo descrever alterações no esquema do BD (criação de tabelas, adição de colunas, índices, gatilhos, etc.) na forma de scripts SQL sequenciais e versionados ou classes Java.

\n\n

O conceito principal do Flyway é simples: cada migração possui um número de versão único (por exemplo, V1, V2, V3) e é executada exatamente uma vez. A biblioteca rastreia quais migrações já foram aplicadas a um banco de dados específico, usando uma tabela especial (por padrão flyway_schema_history). Isso garante idempotência e reprodutibilidade do estado do banco de dados.

\n\n

Por que usar o Flyway?

\n
    \n
  • Versionamento de esquema: Cada alteração no banco de dados é uma versão separada, que pode ser revertida ou aplicada.
  • \n
  • Automação: Integração com Maven, Gradle, Spring Boot e pipelines CI/CD.
  • \n
  • Controle de integridade: O Flyway verifica as somas de verificação das migrações, prevenindo alterações acidentais em scripts já executados.
  • \n
  • Simplicidade: Para a maioria das tarefas, basta escrever um script SQL comum.
  • \n
\n\n

Instalação do Flyway para Java

\n\n

O Flyway não é instalado via pip ou npm, pois é uma biblioteca Java. Existem várias maneiras de adicioná-la ao projeto:

\n\n

1. Maven (pom.xml)

\n
<dependency>\n    <groupId>org.flywaydb</groupId>\n    <artifactId>flyway-core</artifactId>\n    <version>9.22.3</version> <!-- Versão atual no momento da escrita -->\n</dependency>\n\n<!-- Driver para seu BD, por exemplo 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 Maven (para execução via linha de comando)

\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 (configuração automática)

\n

Se você estiver usando Spring Boot, basta adicionar a dependência e configurar os parâmetros no 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

Início rápido com exemplo de código

\n\n

Vamos considerar um exemplo mínimo de uso do Flyway em uma aplicação Java para criar a tabela users.

\n\n

Passo 1: Crie a estrutura de diretórios para migrações

\n

Por padrão, o Flyway procura scripts SQL na pasta db/migration no classpath (por exemplo, src/main/resources/db/migration).

\n\n

Passo 2: Crie o arquivo de migração

\n

Crie o arquivo V1__Create_users_table.sql nesta pasta:

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

Recommendations