Migrações de Banco de Dados
Esta imagem mostra a progressão das migrações de banco de dados ao longo das versões. Cada versão reflete alterações na estrutura do banco de dados, como criação de tabelas, modificação de campos ou adição/remoção de colunas, para acompanhar os requisitos da aplicação.
Durante o desenvolvimento de uma aplicação, pode ser necessário modificar o esquema do banco de dados: adicionar novas tabelas, atualizar as existentes, introduzir índices, entre outros.
As migrações auxiliam no gerenciamento dessas alterações de forma sequencial e organizada, garantindo a integridade dos dados e mantendo o esquema do banco de dados alinhado com o código da aplicação. Para migrações, será utilizado o Flyway.
O que é Flyway?
Um dos principais recursos do Flyway é o suporte à versionamento de migrações, permitindo o acompanhamento das alterações na estrutura do banco de dados e a possibilidade de reverter para versões anteriores se necessário.
Criando uma Migração com Flyway
Para começar, adicione a dependência do Flyway ao seu projeto Spring Boot. Como estamos utilizando o Maven, adicione a seguinte dependência ao arquivo pom.xml:
Também será adicionada outra dependência JPA, que funciona em conjunto com o Flyway. O tema JPA será abordado com mais detalhes posteriormente.
Esta dependência auxilia na integração do Flyway ao projeto. No entanto, isso não é tudo; ainda é necessário configurá-lo!
Naturalmente, o Flyway precisa saber com qual banco de dados irá trabalhar, portanto, é preciso especificar explicitamente o banco de dados e fornecer as credenciais de acesso.
As principais configurações podem ser definidas em application.properties:
spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}
É necessário especificar o url, user e password para permitir que o Flyway funcione com o nosso banco de dados.
No entanto, para evitar inserir esses valores diversas vezes, é possível referenciá-los a partir de outros parâmetros utilizando a sintaxe ${}.
spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}
spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password={your_password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
No capítulo anterior, criamos o banco de dados my_database e adicionamos a tabela book a ele. No entanto, agora podemos excluir a tabela book, pois ela será criada por meio de uma migração.
Agora tudo está pronto para criar a nossa primeira migração na aplicação! É necessário criar uma pasta db dentro do diretório resources e, dentro dessa pasta, criar outra chamada migration. O caminho completo deve ser: src/main/resources/db/migration.
No diretório de migração, agora é possível criar arquivos onde serão definidas as alterações. O formato do arquivo deve ser V<version>__<description>.sql.
V1__create_table_books.sql
Migrações são aplicadas na ordem de suas versões. A numeração das versões deve ser sequencial e sem lacunas. Por exemplo, se houver migrações V1__init.sql e V2__add_column.sql, a próxima migração deve ser V3__another_change.sql.
Dentro do arquivo de migração, é possível escrever scripts SQL para definir a estrutura do banco de dados, criar novas tabelas, colunas, etc.
Vamos escrever o script para criar a tabela books, que foi criada manualmente no capítulo anterior, no nosso arquivo V1__create_table_books.sql.
create table book
(
id varchar(255) not null primary key,
name varchar(255) not null,
author varchar(255) null,
price decimal(10, 2) null
);
Também é possível adicionar um parâmetro ao arquivo application.properties que especifica onde as migrações estão localizadas, para que o Flyway saiba o caminho exato para os arquivos de migração:
spring.flyway.locations=classpath:db.migration
Após isso, execute a aplicação e você deverá ver a tabela criada com os campos que você especificou na migração!
Não é mais possível modificar a primeira versão da migração. Para cada alteração em sua tabela, será necessário criar um novo arquivo de migração e adicionar o novo script nele!
Por que as Migrações são Importantes?
Migrações são necessárias para o gerenciamento organizado das alterações no banco de dados, preservando o histórico e permitindo rollbacks quando necessário.
Elas ajudam a sincronizar a estrutura do banco de dados entre diferentes ambientes como desenvolvimento, teste e produção, além de automatizar o processo de atualização, reduzindo o risco de erros e garantindo que o schema do banco de dados permaneça consistente com o código da aplicação.
Cada migração também documenta alterações específicas, facilitando o entendimento e a manutenção do schema do banco de dados.
Resumo
O uso do Flyway simplifica e automatiza o processo de gerenciamento de alterações no banco de dados, resultando em um desenvolvimento de aplicações mais confiável e eficiente.
1. O que é uma migração de banco de dados?
2. Qual é o papel das versões de migração?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
What are the steps to create a migration file with Flyway?
How does Flyway handle versioning and rollbacks?
Can you explain how to configure Flyway in a Spring Boot project?
Awesome!
Completion rate improved to 3.45
Migrações de Banco de Dados
Deslize para mostrar o menu
Esta imagem mostra a progressão das migrações de banco de dados ao longo das versões. Cada versão reflete alterações na estrutura do banco de dados, como criação de tabelas, modificação de campos ou adição/remoção de colunas, para acompanhar os requisitos da aplicação.
Durante o desenvolvimento de uma aplicação, pode ser necessário modificar o esquema do banco de dados: adicionar novas tabelas, atualizar as existentes, introduzir índices, entre outros.
As migrações auxiliam no gerenciamento dessas alterações de forma sequencial e organizada, garantindo a integridade dos dados e mantendo o esquema do banco de dados alinhado com o código da aplicação. Para migrações, será utilizado o Flyway.
O que é Flyway?
Um dos principais recursos do Flyway é o suporte à versionamento de migrações, permitindo o acompanhamento das alterações na estrutura do banco de dados e a possibilidade de reverter para versões anteriores se necessário.
Criando uma Migração com Flyway
Para começar, adicione a dependência do Flyway ao seu projeto Spring Boot. Como estamos utilizando o Maven, adicione a seguinte dependência ao arquivo pom.xml:
Também será adicionada outra dependência JPA, que funciona em conjunto com o Flyway. O tema JPA será abordado com mais detalhes posteriormente.
Esta dependência auxilia na integração do Flyway ao projeto. No entanto, isso não é tudo; ainda é necessário configurá-lo!
Naturalmente, o Flyway precisa saber com qual banco de dados irá trabalhar, portanto, é preciso especificar explicitamente o banco de dados e fornecer as credenciais de acesso.
As principais configurações podem ser definidas em application.properties:
spring.flyway.url=jdbc:mysql://localhost:3306/my_database
spring.flyway.user=root
spring.flyway.password={your_password}
É necessário especificar o url, user e password para permitir que o Flyway funcione com o nosso banco de dados.
No entanto, para evitar inserir esses valores diversas vezes, é possível referenciá-los a partir de outros parâmetros utilizando a sintaxe ${}.
spring.flyway.url=${spring.datasource.url}
spring.flyway.user=${spring.datasource.username}
spring.flyway.password=${spring.datasource.password}
spring.datasource.url=jdbc:mysql://localhost:3306/my_database
spring.datasource.username=root
spring.datasource.password={your_password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
No capítulo anterior, criamos o banco de dados my_database e adicionamos a tabela book a ele. No entanto, agora podemos excluir a tabela book, pois ela será criada por meio de uma migração.
Agora tudo está pronto para criar a nossa primeira migração na aplicação! É necessário criar uma pasta db dentro do diretório resources e, dentro dessa pasta, criar outra chamada migration. O caminho completo deve ser: src/main/resources/db/migration.
No diretório de migração, agora é possível criar arquivos onde serão definidas as alterações. O formato do arquivo deve ser V<version>__<description>.sql.
V1__create_table_books.sql
Migrações são aplicadas na ordem de suas versões. A numeração das versões deve ser sequencial e sem lacunas. Por exemplo, se houver migrações V1__init.sql e V2__add_column.sql, a próxima migração deve ser V3__another_change.sql.
Dentro do arquivo de migração, é possível escrever scripts SQL para definir a estrutura do banco de dados, criar novas tabelas, colunas, etc.
Vamos escrever o script para criar a tabela books, que foi criada manualmente no capítulo anterior, no nosso arquivo V1__create_table_books.sql.
create table book
(
id varchar(255) not null primary key,
name varchar(255) not null,
author varchar(255) null,
price decimal(10, 2) null
);
Também é possível adicionar um parâmetro ao arquivo application.properties que especifica onde as migrações estão localizadas, para que o Flyway saiba o caminho exato para os arquivos de migração:
spring.flyway.locations=classpath:db.migration
Após isso, execute a aplicação e você deverá ver a tabela criada com os campos que você especificou na migração!
Não é mais possível modificar a primeira versão da migração. Para cada alteração em sua tabela, será necessário criar um novo arquivo de migração e adicionar o novo script nele!
Por que as Migrações são Importantes?
Migrações são necessárias para o gerenciamento organizado das alterações no banco de dados, preservando o histórico e permitindo rollbacks quando necessário.
Elas ajudam a sincronizar a estrutura do banco de dados entre diferentes ambientes como desenvolvimento, teste e produção, além de automatizar o processo de atualização, reduzindo o risco de erros e garantindo que o schema do banco de dados permaneça consistente com o código da aplicação.
Cada migração também documenta alterações específicas, facilitando o entendimento e a manutenção do schema do banco de dados.
Resumo
O uso do Flyway simplifica e automatiza o processo de gerenciamento de alterações no banco de dados, resultando em um desenvolvimento de aplicações mais confiável e eficiente.
1. O que é uma migração de banco de dados?
2. Qual é o papel das versões de migração?
Obrigado pelo seu feedback!