Um artigo de uma série sobre a criação de um projeto Java (links para outros materiais estão no final). Seu objetivo é analisar tecnologias-chave, o resultado é escrever um bot de telegrama. Nesta parte, tentamos lançar SpringBoot e Flyway. A quantidade mínima de teoria, como você quiser))) Omitimos a comparação final do Flyway/Liquibase por um período de tempo indefinido e vamos direto ao ponto. E mesmo assim já se arrastou. Para não descrever o Flyway duas vezes, decidi adicioná-lo imediatamente ao nosso futuro projeto JRTB.
multifacetado, multimodular:
O que precisamos fazer como parte disso?
- Inicie um aplicativo SpringBoot baseado em Maven.
- Adicione Flyway lá: felizmente, eles são facilmente integrados.
- Adicione um esquema para as tabelas que temos no banco de dados de exemplo.
O que é flyway
Para usar algo, primeiro você precisa descobrir o que é e por quê. Flyway é uma ferramenta de controle de versão de banco de dados. As palavras são conhecidas, mas de alguma forma o entendimento não foi acrescentado, certo? Vamos tentar descrever o problema que o flyway resolve. Digamos que temos um projeto. Como tudo no nosso mundo, não é perfeito, por isso não foi possível planear e elaborar a versão final do projeto. Cada vez que aparecem certas nuances não explicadas. O projeto utiliza um banco de dados em seu trabalho. É claro que se o projeto mudar, a estrutura do banco de dados também poderá mudar. Digamos que adicionamos um novo campo para uma das entidades do nosso projeto. Como fazer isso?- Adicione este campo à nossa entidade, atualize tudo para que a lógica de negócio funcione.
- Atualize o banco de dados. A única maneira possível é fazê-lo manualmente. Para fazer isso, você precisa entrar e registrar o script sql necessário.
- Mas se tivermos mais de um local onde implantamos nosso projeto, então isso precisa ser feito em cada um deles?
- e se quisermos voltar, como saberemos exatamente em que estado está a estrutura do banco de dados agora?
- Como teremos certeza de que a alteração do banco de dados foi bem-sucedida?
- Como posso ter a oportunidade de acompanhar todas as alterações do banco de dados que ocorreram no projeto?
Inicie SpringBoot + Flyway
O que é inicialização de primavera
O que estamos lançando?... Para entender o que e por que estamos fazendo, você precisa decidir o que é SpringBoot. Primeiro, vamos falar rapidamente (bem, muito rapidamente) sobre Spring . No momento, é o padrão de fato da indústria no desenvolvimento de aplicativos de servidor em Java. Padrão de quê? Como posso explicar isso para você? Spring é o esqueleto do aplicativo, no qual jogamos a “carne” – nossa lógica de negócios. Com a ajuda do Spring (doravante usarei este papel vegetal para não perder tempo trocando de idioma :D)) o Spring nos dá um ponto de partida a partir do qual começamos a fazer tudo. É- Você quer trabalhar com um banco de dados? Você quer relacional? Você quer não relacional? Aqui estamos com Spring Data.
- Você quer trabalhar com solicitações http? Aqui está, Spring web (Spring MVC).
- Você precisa de um contêiner para todos os seus objetos em um só lugar? Aqui está o Spring Core.
- Você precisa configurar a segurança em um projeto para que haja diferentes funções e cadeias de comando? Segurança da Primavera.
- Justamente quando você pensou que seria bom ter tal coisa, descobriu-se que o Spring já tem o que você precisa e se integra de forma rápida e fácil.
Iniciando SpringBoot
Como já entendemos o que é Maven, vamos criar um novo projeto para as nossas necessidades. Para isso, basta acessar um site criado especialmente para esse assunto. Chama-se Spring Initializr . Aqui você precisa preencher e selecionar o que precisa:- A ferramenta de construção do projeto é gradle ou maven. Como você pode ver, Ant nem é mais mencionado. Esta é uma boa dica sobre quais ferramentas de construção valem seu tempo.
- A linguagem em que você pode escrever é java, kotlin, groovy. Tudo é simples aqui: todos eles são semelhantes a JVM e executam facilmente código Java. Aliás, vale a pena dar uma olhada no Kotlin. Groovy francamente se tornou desinteressante (houve um tempo em que eles mudaram para grooves, mas isso passou rapidamente).
- Versão Spring... Aqui você precisa entender que as versões da parte principal do Spring e seus módulos são consistentes.
- Dados do projeto. Já descrevi essas coisas.
- Nós escolhemos qual arquivo será coletado - Jar ou War.
- Bem, a versão Java do nosso favorito. E recentemente surgiram muitas dessas versões... Eles esperaram anos, e agora são duas por ano.
- Maven - não foi à toa que falamos com você sobre isso antes.
- Java é nosso queridinho :D
- Vamos pegar a versão 2.2.11. Por que não o mais novo? Porque quanto mais novo for, maior será a chance de haver alguns bugs ali. Para nós não importa qual versão, mas a mais antiga será mais confiável. Portanto, escolhemos 2.2.11.
- Grupo: com.github.javarushcommunity
- Artefato: springboot-flyway-demo
- Nome: Demonstração SpringBoot + Flyway
- Descrição: Projeto demonstra integração entre SpringBoot e Flyway . (Sim, a capacidade de escrever documentação é uma parte importante do desenvolvimento :))
- Nome do pacote: com.github.javarushcommunity.springbootflywaydemo . Aqui eles criarão imediatamente um pacote básico para nós com uma classe que iniciará nosso aplicativo.
- Embalagem: Frasco
- Java: 8. Não vamos adiantar a locomotiva e pegar o bom e velho oito. Por que não 11? Pelo que? Para o nosso exemplo, não vejo sentido.
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Executamos o método principal novamente e obtemos: Agora precisamos adicionar pelo menos uma migração. Para compor corretamente uma migração, você precisa usar o seguinte modelo: V<VERSION>__<NAME>.sql Usando este modelo, criaremos um arquivo de migração chamado V00001__Create_country_table.sql na pasta apropriada: /src/main/resources/ db.migration/ . Vamos criar uma tabela de países nela. Vamos pegar o script do segundo artigo sobre banco de dados . Antes de começar, vamos criar um banco de dados para trabalho: flyway_demo_db. Vamos fazer isso através do MysqlWorkbench: Agora podemos executar novamente o método main: Deu tudo certo, mas como ainda não temos nada no projeto, ele terminou de funcionar. No entanto, fica claro nos logs ( leia o que são logs ) que:
- Conectado com sucesso ao banco de dados.
- A migração foi validada e está tudo bem.
- Flyway criou uma tabela para gerenciar migrações.
- E o que a migração 00001 começou - a criação do país foi um sucesso.
Conclusão
Desta vez aprendemos como entender e usar uma ferramenta de migração de banco de dados em conjunto com SpringBoot. Essas informações são necessárias para entender o que é uma ferramenta de controle de versão de banco de dados, usando o Flyway como exemplo. Amigos, o código fonte do projeto que mostrei está publicado em nossa organização no Github . Se você gostou do exemplo, dê uma estrela e entenderei que meu trabalho é útil e realmente vale a pena continuar. Tradicionalmente, sugiro assinar minha conta no Github . Através dele conduzo todo o meu trabalho em código aberto e todos aqueles projetos de demonstração que invariavelmente acompanham meus artigos. Obrigado a todos pela leitura. Da próxima vez escreveremos nossa aplicação. Haverá alguma teoria necessária sobre o Docker no futuro, mas iremos diluí-la fortemente com a prática.Links Úteis
Hoje não existem muitos links úteis. Preste atenção no vídeo do Evgeniy, vale muito a pena!- Site para criação de projetos no Spring
- Evgeniy Borisov – construtor de primavera
- Documentação no Spring para Flyway
GO TO FULL VERSION