Este artigo apresenta o uso do Flyway for Springboot para ativar a migração do banco de dados. É compartilhado com você. Os detalhes são os seguintes:
Primeiro, deixe -me entender como Flyway funciona.
A solução mais fácil é apontar a via de mosca para um banco de dados vazio.
Ele tentará encontrar sua tabela de metadados. Quando o banco de dados estiver vazio, o Flyway não o encontrará, mas o crie. Agora você tem um banco de dados com uma única tabela vazia chamada schema_version:
Esta tabela será usada para rastrear o estado do banco de dados. Depois disso, o Flyway começará a digitalizar o sistema de arquivos ou o caminho de classe do aplicativo para migração. Eles podem ser escritos em SQL ou Java.
Em seguida, classifique as migrações pelo número da versão e aplique em ordem:
À medida que cada migração é aplicada, a tabela de metadados será atualizada de acordo:
schema_version
Com os metadados e o estado inicial em vigor, agora podemos falar sobre migração para versões mais recentes.
A Flyway digitalizará o sistema de arquivos ou a classe do aplicativo novamente em busca de migração. Verifique as migrações contra tabelas de metadados. Se os números da versão forem inferiores ou iguais ao número da versão marcado como a versão atual, eles serão ignorados.
As migrações restantes estão pendentes de migrações: disponíveis, mas não aplicadas.
Em seguida, eles classificam o número da versão e executam por sua vez:
Esta tabela de metadados é atualizada, então:
schema_version
É isso! Sempre que você precisar desenvolver um banco de dados, seja a estrutura (DDL) ou os dados de referência (DML), basta criar uma nova migração com um número de versão maior que a versão atual. Na próxima vez em que o Flyway começar, descobre e atualiza o banco de dados de acordo.
2. O uso do Flyway no Springboot
Uma maneira é definir a propriedade Hibernate.hbm2ddl.auto para criar, criar drop ou atualizar por meio da propriedade Spring.jpa.hibernate.ddl-AUTO da Spring Boot. Por exemplo, para definir o hibernate.hbm2ddl.auto para criar-drop, podemos adicionar o seguinte conteúdo no application.yml:
Primavera: JPA: Hibernate: DDL-AUTO: Create-Drop
No entanto, isso não é ideal para ambientes de produção, porque toda vez que o aplicativo reinicia o banco de dados, o esquema será esvaziado e reconstruído do zero. Pode ser definido para atualizar, mas, mesmo assim, não recomendamos usá -lo para ambientes de produção.
Há outra maneira. Podemos definir esquema em esquema.sql. Na primeira execução, não há problema em fazer isso, mas toda vez que o aplicativo é iniciado, esse script de inicialização falha porque a tabela de dados já existe. Isso requer cuidado extra ao escrever scripts de inicialização e não repetir o trabalho que foi feito.
Uma opção melhor é usar a biblioteca de migração de banco de dados. Ele usa uma série de scripts e registros de banco de dados que foram usados e não usa o mesmo script várias vezes. Cada pacote de implantação de um aplicativo contém esses scripts, e o banco de dados pode ser consistente com o aplicativo. A Spring Boot fornece suporte de configuração automática para duas bibliotecas de migração de banco de dados populares.
Quando você deseja usar uma dessas bibliotecas no Spring Boot, basta adicionar as dependências correspondentes ao projeto e escrever um script. Vamos começar com a Flyway.
1. Use Flyway para definir o processo de migração do banco de dados
O Flyway é uma biblioteca de migração de banco de dados de código aberto muito simples que usa o SQL para definir scripts de migração. A idéia é que cada script tenha um número de versão e a Flyway execute esses scripts em sequência para levar o banco de dados ao estado desejado. Ele também registra o status do script executado e não será repetido. Aqui no aplicativo de leitura da lista, começamos com um banco de dados vazio sem tabelas e dados de dados. Portanto, esse script precisa criar primeiro as tabelas de leitores e livros, incluindo restrições de chave estrangeira e dados de inicialização. Listando 8-2 do código é um script de flyway de um banco de dados vazio para um estado disponível.
Script inicial do banco de dados Flyway
Criar Table Reader (Id Serial Primary Key, Nome de usuário Varchar (25) exclusivo e não nulo, senha varchar (25) não nula, fullname varchar (50) não nulo); Criar tabela Livro (Id Série Primária Chave, Autor Varchar (50) Não NULL, Descrição Varchar (1000) Não NULL, ISBN Varchar (10) Não NULL, Título Varchar (250) NÃO NULL, Reader_Username Varchar (25) Não NULL, Foreign Key (Reader_username) Referências (Username)); Criar sequência hibernate_sequence; inserir no leitor (nome de usuário, senha, name fullname) ('craig', 'senha', 'paredes de craig'); Como você pode ver, o script da Flyway é SQL. O que o faz funcionar é o seu local e o nome do arquivo no caminho de classe. Todos os scripts da Flyway seguem uma especificação de nomeação, contendo números de versão, como mostrado na Figura 8-1.
Todos os scripts do Flyway têm nomes que começam com a letra capital V, seguida pelo número da versão do script. Seguido por dois sublinhados e uma descrição do script. Como este é o primeiro script em todo o processo de migração, sua versão é 1. A descrição pode ser muito flexível e é usada principalmente para ajudar a entender o objetivo do script. Mais tarde, precisamos adicionar uma nova tabela ao banco de dados ou adicionar um novo campo à tabela de dados existente. Você pode criar outro script com o número 2 da versão 2. O script Flyway precisa ser colocado no caminho /db /migração em relação ao caminho raiz do caminho do aplicativo. Portanto, no projeto, o script precisa ser colocado em SRC/Main/Recursos/DB/Migração. Você também precisa definir spring.jpa.hibernate.ddl-auto para nenhum, para que o hibernato não crie tabelas de dados. Isso está relacionado ao seguinte conteúdo no Application.yml:
Primavera: JPA: Hibernate: DDL-AUTO: Nenhum
Tudo o que resta é adicionar a Flyway como uma dependência do projeto. Em Gradle, essa dependência se parece com o seguinte:
Compile ("Org.flywaydb: Flyway-Core")No projeto Maven, parece o seguinte:
<Depencency> <voupid> org.flywayfb </groupiD> <TRATIFACTID> Flyway-core </ArtifactId> </dependency>
Depois que o aplicativo for implantado e executado, a Spring Boot detectará o Flyway no ClassPath e configurará automaticamente os grãos necessários. A Flyway verá os scripts em /dB /migração por sua vez e executará esses scripts se eles não tiverem sido executados. Depois que cada script for executado, escreva um registro na tabela Schema_version. Na próxima vez que o aplicativo for iniciado, o Flyway examinará os registros em Schema_version e pulará esses scripts.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.