DataARTIGO

Automatizando seu banco de dados com o plugin FlyWay

No artigo de hoje, vou mostrar para vocês como podemos automatizar a criação de um banco de dados usando o plugin flyway.

Olá, pessoal!

No artigo de hoje, vou mostrar para vocês como podemos automatizar a criação de um banco de dadosBanco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data usando o plugin flyway. Aqui na ITS, temos usado o plugin para aumentar a produtividade e sempre manter a integridade dos ambientes.

Let’s go…

O problema

Há várias ferramentas e formas de automatizar a criação das tabelas do banco com cenários já prontos ou até vazios. Aqui na ITS, para os projetos JavaJava42 conteúdosNovidades do Java 26 (para desenvolvedores)Dev (Back & Front) · mar 2026Visual Studio Code para Java: o guia completo (dicas, configuração e extensões)Dev (Back & Front) · out 2025Quarkus: Modernizando a linguagem Java para a era da nuvemDev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) , temos usado o flyway, apesar de termos testado outras como o DBMaintain, mas optamos pelo plugin flyway, já que em termos de resultado final era semelhante ao dbmaintain, porém a curva de aprendizado e a configuração eram mais rápidas. Para projetos Ruby, estamos vendo outra solução.

O problema que tínhamos aqui era a criação da base de dados para cada ambiente, desde local até ambiente de INT, DEV e PROD. A modelagem do banco pode mudar (e certamente vai) e, quando isso acontece, o problema está feito. Como atualizar cada ambiente rapidamente?

Opção 1

Criar um dump do banco e rodar o .sql em cada ambiente manualmente.

Opção 2

Automatizar esse processo de update.

Nesse artigo, vamos nos limitar a como gerar a base de dados rapidamente. Em outro, veremos como atualizar outros ambientes através de uma ferramenta de build continuous como o Jenkins.

A opção 1 funciona, mas não é a ideal, pois é preciso logar em cada ambiente e rodar o .sql. Isso consome tempo e é chato de fazer, e ninguém gosta de trabalho repetitivo. E se o banco durante o dia mudar 3 ou 4 vezes? Quantas vezes você vai executar a opção 1? Se você tem 3 ambientes para atualizar, será preciso fazer isso 3 vezes a cada mudança. Péssimo, não?

A opção 2

Você pode automatizar. Há ferramentas que ajudam a fazer isso usando um Servidor de Build, como o Jenkins ou até plugin maven. Já usei o dbmaintain, mas analisando outras opções encontrei o flyway, até porque o desenvolvedor pode rodar o plugin local e, se tiver o banco de dados rodando, em segundos ele tem o ambiente local atualizado.

Configurando o FlyWay via Maven

Antes de tudo, você precisa ter um arquivo .sql que irá criar as tabelas e ele deve estar nessa estrutura: src/main/resources/db/migration

flywaysql

E o nome do arquivo tem que ser V1__QUALQUERNOME.sql.

São 2 underscore. Se seu banco mudou, você precisa ter um V2, e assim por diante. O flyway faz um tracking disso e salva em uma tabela schema_version. Se você tem mais de um ambiente, sugiro dar uma lida neste artigo.

Vamos ver na prática um simples exemplo. Vou considerar que você já tem um projeto Maven

Step 1

Abra o pom e adicione:

<plugin>
				<groupId>com.googlecode.flyway</groupId>
				<artifactId>flyway-maven-plugin</artifactId>
				<version>2.2.1</version>
				<configuration>
					<url>jdbc:mysql://localhost:3306/seu_database</url>
					<user>camilo </user>
					<password>2014</password>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>mysql</groupId>
					<artifactId>mysql-connector-java</artifactId>
						<version>5.1.25</version>
					</dependency>
				</dependencies>
			</plugin>

Step 2

Garanta que o banco foi inicializado.

Step 3

Garanta que o database exista, caso contrário o flyway não vai conseguir conectar.

flywaydatabase

Step 4

Via command line (se preferir pode usar o Eclipse), digite o seguinte comando:

flywaycommandmigrate

Step 5

Veja o resultado:

flywaycommandmigrateresult

flywaytablecreated

Observe que as tabelas foram criadas. Tive que ocultar os nomes das tabelas.

Simples, não?

Alguns comandos básicos

mvn flyway:clean

Limpa o Database, ou seja, todas tables são apagadas.

mvn flyway:info

Mostra quando o último script foi rodado e o status.

mvn flyway:migrate

Faz a migração, ou melhor, executa o .sql em si.

Note: Você pode usar o recurso de profiles e ter diferentes execuções para o flyway.

O flyway tem se mostrado um plugin muito bom no dia a dia e atendendo aos requisitos de que precisamos, sem falar que tem uma boa documentação e os textos no blog deles têm sido muito bons.

Abraços, see ya!!

é Bacharel em Sistemas de Informação e Especialista em Gestão e Estratégia de Negócios. Trabalha com TI desde 2003 e possui as certificações SCJP 5 e SCM. Trabalhou na IBM Brasil como Analista Programador Java, passou pelo laboratório da Enterprise Computing Lab (ECL) HP como Software Engineer, Ci&amp;T como Engenheiro de Software em projeto JEE. Tem experiência internacional em Índia, Dubai e Londres. Atualmente é cofundador da ITSLabs (www.itslabs.com.br), uma start-up focada na criação de produtos web e mobile para start-ups. Também é autor dos livros "Guia do Exame SCJP", "Guia Prático JEE com Frameworks" e "TDD na prática".

Ver perfil