Flyway e Spring Boot: como gerenciar a evolução do banco de dados de forma automatizada e integrada
O Flyway é uma ferramenta de controle de versão para bancos de dados, que permite aos desenvolvedores gerenciar a evolução de seus esquemas de banco de dados de forma automatizada e controlada. O Flyway é um software de código aberto e suporta vários bancos de dados, incluindo Oracle, PostgreSQL, MySQL, SQL Server, entre outros.
O objetivo principal do Flyway é ajudar os desenvolvedores a gerenciar as mudanças em seus bancos de dados de forma consistente, garantindo que todas as alterações sejam controladas, rastreadas e versionadas. Com o Flyway, os desenvolvedores podem automatizar a execução de scripts de migração e garantir que as mudanças em seus esquemas de banco de dados sejam aplicadas de forma correta e segura.
Entre as principais vantagens do Flyway estão a facilidade de uso, a integração com ferramentas de construção (como o Maven e o Gradle), a geração automática de scripts de migração, o suporte a rollbacks e a possibilidade de customizar as configurações de migração de acordo com as necessidades de cada projeto.
Em resumo, o Flyway é uma ferramenta essencial para desenvolvedores que precisam gerenciar a evolução de seus esquemas de banco de dados de forma automatizada e controlada.
Como configurar o Flyway em um projeto Spring Boot
A primeira coisa que você precisa fazer é adicionar o Flyway ao seu projeto. Para isso, adicione a seguinte dependência ao seu arquivo pom.xml:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>9.15.1</version>
</dependency>
Em seguida, adicione as seguintes propriedades no arquivo
que se encontra pasta application.properties
.src/main/resources
# Propriedades de configuração de acesso ao banco de dados por JDBC
spring.datasource.url=jdbc:postgresql://localhost:5432/meu_banco_de_dados
spring.datasource.username=meu_usuario
spring.datasource.password=minha_senha
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
# Configuração do Flyway
spring.flyway.locations=classpath:db/migration
Observe que estamos definindo a URL, nome de usuário e senha do banco de dados, bem como o dialeto do Hibernate para PostgreSQL. Além disso, estamos configurando o Flyway para buscar as migrações na pasta
.db/migration
Em seguida, crie uma pasta chamada
na pasta db/migration
. Esta pasta irá conter os scripts de migração do Flyway. Por padrão, o Flyway procura por scripts com o nome no formato src/main/resources
.V<versão>__<descrição>.sql
Por exemplo, se você quiser criar um script para adicionar uma nova tabela chamada clientes, crie um arquivo chamado
na pasta V1__criar_tabela_clientes.sql
e adicione o seguinte conteúdo:db/migration
CREATE TABLE clientes (
id SERIAL PRIMARY KEY,
nome VARCHAR(50),
email VARCHAR(100)
);
A primeira parte do nome do arquivo (
) indica a versão do script. Você pode usar um número ou uma sequência alfabética para controlar a ordem dos scripts. A segunda parte (V1
) é uma descrição opcional do script.criar_tabela_clientes
Com essa configuração, o Flyway será capaz de ler o datasource configurado no Spring Boot e executar as migrações de forma automática quando a aplicação for iniciada.
Como é feito o controle de execução dos scripts pelo Flyway
O Flyway cria uma tabela especial no banco de dados para controlar o histórico das migrações executadas, chamada de "flyway_schema_history".
A tabela "flyway_schema_history" mantém um registro de todas as migrações que foram executadas, incluindo o número da versão, descrição, data e hora da execução, bem como o checksum (hash) da migração. Essa tabela é fundamental para que o Flyway possa determinar quais migrações precisam ser executadas e em que ordem.
Além disso, o Flyway também pode criar uma tabela adicional chamada "flyway_lock", que é usada para controlar o bloqueio do banco de dados durante a execução das migrações. Essa tabela é opcional e é usada apenas se você estiver executando migrações em um ambiente distribuído, onde vários nós podem tentar executar as migrações simultaneamente.
Conclusão
O Flyway é uma ferramenta valiosa para os desenvolvedores que precisam gerenciar a evolução de seus esquemas de banco de dados de forma controlada e automatizada. O Flyway suporta vários bancos de dados e é fácil de usar, com integração com ferramentas de construção e possibilidade de customização das configurações de migração. A criação automática de scripts de migração, o suporte a rollbacks e o controle de execução dos scripts pelo Flyway tornam a evolução do banco de dados mais segura e consistente. Com o Flyway, os desenvolvedores podem manter o controle sobre a evolução do esquema do banco de dados e garantir que as mudanças sejam aplicadas de forma correta e segura.