Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Migrações de Banco de Dados | Trabalhando com Bancos de Dados
Spring Boot Backend

bookMigraçõ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?

question mark

O que é uma migração de banco de dados?

Select the correct answer

question mark

Qual é o papel das versões de migração?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

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

bookMigraçõ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?

question mark

O que é uma migração de banco de dados?

Select the correct answer

question mark

Qual é o papel das versões de migração?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 3
some-alt