Fala, pessoal. Tranquilo? Hoje, vamos explorar o Flyway em mais detalhes e implementá-lo rapidamente e facilmente em um projeto Spring Boot. É incrivelmente fácil de configurar e usar em seus próprios projetos e é amplamente utilizado no desenvolvimento profissional.

O que é o Flyway?

Flyway é uma ferramenta de migração de banco de dados baseada em código aberto. Ele permite que os desenvolvedores gerenciem a evolução do banco de dados de maneira confiável, automatizada e incremental. Isso significa que, em vez de fazer mudanças manuais no banco de dados, os desenvolvedores podem escrever scripts SQL simples que podem ser executados automaticamente pelo Flyway. Esses scripts são versionados e gerenciados pelo Flyway, permitindo que a equipe de desenvolvimento acompanhe as alterações no banco de dados.

Como o Flyway funciona?

O Flyway funciona por meio de uma abordagem baseada em migrações. Uma migração é um conjunto de scripts SQL que implementam uma alteração no banco de dados. Essas migrações são versionadas e organizadas em ordem cronológica. Quando o Flyway é executado, ele verifica o estado atual do banco de dados e aplica as migrações necessárias para levá-lo à versão mais recente.

Além disso, ele fornece suporte para vários bancos de dados, incluindo PostgreSQL, MySQL, Oracle, Microsoft SQL Server e muitos outros.

Como usar o Flyway em um projeto Java com Spring Boot?

Usar o Flyway em um projeto Java é relativamente simples. Aqui nós usaremos com o Maven, mas também pode ser usado com o Gradle. Primeiro, você precisa adicionar a dependência Flyway ao nosso arquivo pom.xml.

<dependency> 

<groupId>org.flywaydb</groupId> 

<artifactId>flyway-core</artifactId> 

</dependency>

Em seguida, nós precisamos criar um diretório para nossos scripts de migração. O Flyway espera que esses scripts estejam em um diretório chamado db/migration, lembrando que é uma pasta db e uma pasta migration dentro de db. Dentro deste diretório, você deve criar um script SQL para cada migração. O nome do arquivo deve seguir o padrão V{version}__{description}.sql, onde {version} é um número de versão e {description} é uma descrição curta da migração.

Agora iremos configurar o nosso application.properties para identificar o Flyway. Primeiro iremos inserir um atributo para ativarmos o Flyway spring.flyway.enabled=true e spring.flyway.locations=filesystem:db/migration para indicarmos que nossa pasta está na raiz do nosso projeto, ou seja, junto do src, pom.xml e outros. Você também pode adicionar essa propriedade spring.flyway.baseline-on-migrate=true para criar uma tabela junto com a migração e assim ter acesso ao histórico de modificações.

Por exemplo, se você quiser adicionar uma nova tabela ao seu banco de dados, pode criar um arquivo de script chamado V1__create_table_produtos.sql. O conteúdo deste arquivo seria o SQL para criar a nova tabela de produtos. Exemplo:

CREATE TABLE produtos (
id INTEGER PRIMARY KEY,
valor DECIMAL(6, 2),
nome VARCHAR(266)
);


Quando você executar o Flyway, ele executará esse script e adicionará a tabela ao banco de dados. E seguindo essa lógica nenhuma versão anterior pode necessariamente depender de uma versão posterior, como V1__create_table_produtos.sql ser a primeira tabela criada pelo Flyway e ela fazer referência a uma tabela que não existe ainda, isso vai gerar erro. Se você tentar alterar o conteúdo do arquivo V1, ele irá gerar erro, porque essa versão já foi inserida no banco de dados, para fazer uma nova alteração é necessário criar um novo arquivo de uma versão posterior para realizar a mudança.

Conclusão

Finalmente vocês não precisaram mais se preocupar com rodar todos os scripts do banco de dados e até mesmo usar scripts para os popular. Flyway é uma ferramenta extremamente fácil de utilizar e muito usada no ambiente de desenvolvimento profissional. Espero que agregue algo no conhecimento de cada um que passar por aqui. Grande abraço e até a próxima.