Neste segundo post falando sobre o Flyway, vamos meter a mão na massa e trazer um exemplo para implementar a ferramenta em um projeto Java EE. Basicamente, mexeremos no arquivo pom.xml, então conhecimentos de Maven serão necessários. Tentarei explicar os principais conceitos ao longo do post. Vamos lá!
(o post relativo a primeira parte pode ser lido aqui)
O primeiro passo é criar a pasta src/main/resources/db/migration, onde ficarão os scripts de banco de dados. Esses scripts deverão receber um padrão de nomeação especial: todos os scripts deverão conter o prefixo Vxx__, com xx indicando a versão. Repare no duplo caractere underline. Se o script se referir à uma view ou stored procedure, o prefixo deve ser R__. Alguns exemplos de nomes de scripts:
- V01__criacao_tabelas.sql;
- V02__inclui_indice.sql;
- R__view_func_ativos.sql;
- R__sp_inclui_func.sql.
No segundo passo, vamos mexer no pom.xml. Adicionaremos, na seção plugins, o plugin do Flyway. Os plugins são uma forma que o Maven criou para ser estendido com novas funcionalidades. No momento da criação deste post, a versão mais atual era a 7.7.3 - descubra qual a versão mais atual no site mvnrepository.com, procurando por Flyway Maven Plugin. Toda a configuração do Flyway deve ser adicionada nesta seção a ser incluída: qual o driver JDBC, URL de acesso, usuário, senha, schema do banco a ser utilizado. Duas subseções serão configuradas: a subseção de dependências, contendo o driver JDBC, e a subseção de configuração, com as demais informações. Todo o trecho XML ficará parecido com o trecho abaixo:
<plugins>...
<plugin>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-maven-plugin</artifactId>
<version>7.7.3</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
<configuration>
<driver>com.mysql.cj.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/musicas?serverTimezone=UTC</url>
<user>usrmusica</user>
<password>usrmusica</password>
<schemas>
<schema>musicas</schema>
</schemas>
</configuration>
</plugin>
- Temos a senha de acesso ao nosso banco de dados chapada no arquivo pom.xml. Toda e qualquer pessoa que tenha acesso ao código-fonte também terá acesso a essa senha, que possui permissões DDL no nosso banco de dados;
- Se tivermos ambientes diferentes para o nosso projeto (desenvolvimento, testes, homologação, produção, etc.), como iremos diferenciar os diferentes conjuntos de bancos de dados e credenciais de acesso?
- Quando observarmos o arquivo jar / war gerado, perceberemos que os scripts são incluídos. Não queremos que nosso jar / war contenha esse tipo de arquivo, totalmente desnecessário para a execução do projeto.
Comentários
Postar um comentário