Oi pessoal sejam bem-vindos ao meu canal para quem não me conhece eu sou a Fê e no vídeo de hoje a gente vai aprender a fazer a manipulação no nosso banco de dados no nosso servidor Spring através da criação de my rations o banco jurados que a gente vai estar usando aqui hoje é o postres e esse vídeo é uma extensão de uma série de vídeos que eu fiz aqui no canal onde a gente cria uma aplicação fuscake do zero então a gente cria um back ange usando Java Spring e um frontiend usando react Mas
quem só quer aprender a fazer my greations no Java pode assistir esse vídeo também então sem mais delongas Bora para o vídeo [Música] Então pessoal eu já tô aqui na nossa aplicação que a gente desenvolveu aqui no vídeo do YouTube também eu vou deixar o link no card e o que a gente vai fazer é a gente vai configurar o nosso servidor para fazer a criação automática das nossas tabelas no banco de dados e fazer o controle da versão do nosso banco de dados Como assim a medida que a nossa aplicação vai evoluindo a gente
vai adicionando novas funcionalidades Ou trocando o funcionamento de alguma coisa a gente precisa fazer adaptações ao nosso banco de dados também a gente vai precisar adicionar uma nova tabela ou uma nova coluna nessa tabela ou trocar alguma coluna trocar o tipo enfim a gente acaba fazendo modificações e a gente precisa aguardar o histórico dessas modificações também para que a gente consiga ter uma visão né como é que está o nosso banco hoje como é que ele era também para fazer a migração dos dados caso precise isso é super importante então a gente vai usar hoje
uma biblioteca chamada flyway essa biblioteca a gente consegue integrar com o nosso servidores e fazer toda essa manutenção automática mas antes eu vou executar aqui a nossa aplicação para vocês e vou mostrar um erro que pode acontecer Caso vocês tenham seguido o tutorial anterior onde a gente cria todo esse servidor então eu vou executar aqui minha aplicação ou clicar aqui no botãozinho Verde ele é onde inicia e pronto ela iniciou sem problemas então agora eu vou abrir o meu insônia para a gente disparar uma requisição para o nosso servidor e ver se está tudo ok
então vou primeiro disparar uma requisição de get beleza Tá retornando um lado lá do banco de dados agora vamos disparar mais uma requisição de post aqui eu vou tocar o título para teste para a gente conseguir ver se tá atualizando esse valor mesmo vou trocar aqui um valor só para a gente ver ali no GAT de novo vou mandar essa requisição 200 deu Ok vou mandar a requisição de grátis de novo ó pode ver que ele já inseriu o valor de teste tranquilo tá funcionando a minha tabela lá no banco de dados já tá criada
ele já consegue fazer essa conexão tudo de boa mas se eu não tivesse essa tabela criada no meu banco de dados ainda quando eu estivesse desenvolvendo minha aplicação iria ocorrer um erro e eu vou mostrar esse erro para vocês eu vou encerrar aqui o meu servidor e eu vou abrir o postiko o postiko é um programa gerenciador de banco de dados para o post Então é só para eu não precisar ficar escrevendo SQL no terminal usa o postiko que é mais uma interface visual a gente consegue fazer tudo através de botões Então vou mostrar para
vocês tô aqui no postiko tô dentro do meu banco de dados food então lembra que ó nesse aplica a gente configura Qual é o banco de dados que a gente está usando então tô usando um banco de dados postres que tá no meu localhost e o dele é base especificamente dentro desse banco de dados eu dele a base food e aqui no meu postico eu tô ó dentro do Fernando aquieper food então eu vou entro aqui nesse dele é base e aqui dentro desse dele a base tem duas tabelas eu vou excluir essa tabela food
que é a tabela onde ele tá inserindo os dados né ali através do meu servidor eu vou excluir ela como se eu nunca tivesse criado e eu vou excluir também aqui a tabela do Flying que isso aqui eu tava usando antes para testar não vou excluir Não tem nada dentro desse meu dedo a vez não tem nenhuma tabela nada só o dele é vez criar não vou Minimizar aqui e vou iniciar a nossa aplicação de novo iniciei aplicação tranquilo não deu nenhum erro mas agora eu vou abrir o nosso insônia e vou disparar uma requisição
de novo vou vir aqui no insônia e vou te esperar uma requisição de get e ele deu erro a gente pode ver aqui que ele trouxe todo o log do erro se a gente abrir aqui no nosso intelli a gente vai ver que ele tá dizendo ó que não existe nenhuma tabela Foods eu tô tentando consultar o dado ali dentro e não existe e no tutorial aqui do canal onde a gente cria o nosso servidor eu não fiz esse processo de criar a tabela porque normalmente a gente já tem a tabela criada lá no nosso
banco de dados e eu só fiz a conexão do nosso servidor com essa tabela para inserir dados lá e consumir então aqui hoje a gente vai configurar o nosso servidor para criar essa tabela também e manter a versão dela né manter o versionamento do nosso banco de dados Então vamos lá como eu falei para vocês a gente vai precisar adicionar uma biblioteca que é a Flying então eu vou abrir o meu navegador e eu já tô aqui no site do springerizer porque a gente vai adicionar uma nova biblioteca Então vou selecionar aqui que é um
projeto mavening Java tranquilo e aqui é dependentes e a gente vai procurar por Flying Racing aí vamos ver aqui em Explorer no Ponche x ml e vou copiar essa dependência aqui do Flyer que vai ser só essa que a gente vai precisar adicionar porque a dependência do postres né do Driver do post já tá no nosso projeto então a gente só vai precisar adicionar o flyway eu vou ver aqui no meu Ponche x ml e abaixo do da JPA eu vou adicionar o flyway eu vou parar minha aplicação vou vir aqui em maven vou instalar
de novo né vou dar o relógio aqui para ele instalar dependências novamente quando a gente clica aqui em helloud a gente consegue ver que aqui embaixo ele mostra que ele tá instalando e já finalizou E se eu abrir aqui dependesse a gente vai ver agora que já tem o flyway aqui nas minhas dependências então vou fechar vou Minimizar aqui meu terminal também e vamos então fazer a configuração do Flyer para que ele crie a nossa tabela galera um aviso super importante antes da gente iniciar a escrita da nossa igreja toda vez que a gente for
criar uma nova my greath na nossa aplicação é super importante que a gente para opção do nosso servidor então a gente escreve o nosso arquivo de mygration e só depois que a gente finalizar a escrita que tiver tudo escrito certinho a gente inicializa a nossa aplicação de novo porque porque o flyway vai sempre tentar executar as novas my greations que ele identificar no nosso projeto então toda vez que a gente starta a nossa aplicação ou que ele detecta ali dentro da pasta de uma grations que tem uma nova my granion Ele vai tentar executar E
caso você vai ganhar ainda não esteja inscrito da forma correta seja faltando alguma coisa pode dar algum erro e aí fica um pouco mais complicado de resolver esse erro então sempre lembrem de parar aplicação de vocês escreve o arquivo de migration e depois inicializa a aplicação de novo Beleza então vamos continuar escrito no nosso arquivo de my grancho então aqui dentro de resorts a gente vai criar uma nova pasta a gente vai criar uma pasta DB e dentro dessa pasta vai ter uma outra pasta chamada my greations my greations é o como a gente chama
esses arquivos que mantém o versionamento do Nosso Banco então a cada nova versão né Cada atualização que a gente faz no nosso banco de dados é uma boa prática a gente criar uma my greatio para indicar essa atualização essa criação etc Então vou ver aqui em resorts que ele já vai saber que eu tô criando um sub-diretório my greathion dentro de DB e agora eu vou criar um arquivo dentro desse my Gran vou vir aqui em file e vai ser um arquivo ponto SQL tá Extensão normal do SQL Só que tem um padrão que a
gente precisa dar para esse nome desse arquivo para o Fly eu entender que ele é uma my grancho então primeiro a gente vai botar v e um número o que que é esse veio o número é a versão do banco de dados então aqui eu tô dizendo que essa é a V1 do meu da base viu underline underline e aí o nome que a gente quer dar para essa my ratio essa my Rush que vai ser de Create table Foods Então vê um do meu banco de dados eu tô criando a table Foods enter pronto
aqui gente só tá me perguntando se eu quero adicionar esse falhou ao Hit mas depois a gente vai fazer o convite beleza e aqui dentro desse nosso arquivo SQL a gente vai colocar o comando SQL para criação da nossa tabela então aqui é esse que é ele básico Então vou colocar Create table Foods aqui tem que botar um ponto e vírgula no final para não esquecer e aqui os comandos SQL para criar as colunas dentro dessa tabela eu já tenho os comandos aqui eu vou só colar mas eu vou repassar aqui com vocês para vocês
entenderem direitinho então Ó eu tô criando uma tabela Foods com a coluna A de essa coluna é de é um serial ou seja vai Auto incrementando e é uma Troy Mary Kay ou seja o identificador único dos elementos dentro dessa minha tabela vai ter também uma coluna Python que vai ser do tipo Text e não pode ser nulo uma coluna Price que vai ser do tipo intuger e também não pode ser nulo e uma coluna de que vai ser um mais string e aqui eu não botei que não pode ser nulo porque pode ser que
essa essa comida não tem uma foto etc Então deixei só assim você vai esse arquivo vou adicionar ele aqui nas minhas Changes para ele tirar aquele aquele vermelhinho deixar verdinho porque senão ele fica indicando que esse arquivo não tá sendo tratado pelo Git e vou iniciar novamente a minha aplicação eu vou vir aqui no meu cardápio application e clicar no botãozinho Verde pronto iniciou com sucesso e aqui a gente consegue ver ó que teve um log do flyway ele disse aqui ó câmera de esquema então não tem nada dentro lá da minha do meio dele
a base então ele vai rodar as mais grations ele tá rodando my gition da v1 Crate table Foods que é justamente esse arquivo que a gente criou aqui agora ele terminou de rodar com sucesso então iniciou meu servidor E agora se eu entrar lá no postiko de novo vou entrar aqui vou dar um Reload a gente vai ver que agora ele criou essa tabela Foods e criou essa tabela flywo e esquema também que que essa tabela foi o esquema é onde o Flyer guarda besteira base Então para que toda vez que eu iniciar meu servidor
ele não rodar isso aqui de novo né não ficar tentando criar uma table Foods quando já existe o Flyer cria uma própria tabela dentro do nosso para guardar um histórico das mais das my granchos que ele já executou então a gente não pode excluir aquela tabela ali aquilo ali é o histórico para o Flyer entender quando toda vez que ele Executar a nossa aplicação né Toda vez que a gente iniciar Nossa aplicação quais my greations ele deve rodar ou não Então quais são as novas e quais são as antigas que já existem lá no banco
de dados e se a gente entrar aqui na nossa tabela Foods a gente vai ver que ele criou ó Que estrutura certinho com tudo que a gente configurou o id o title price e a image E agora se eu voltar lá para o insônia e disparar a requisição de gatinho novo ele não vai mais me dá um erro só vai me retornar uma Rei Brasil porque não tem nada dentro da minha tabela dentro do banco de dados e se eu rodar aqui um post para fazer um post para adicionar um elemento dentro do meu banco
de dados e rodar de novo ele passa a me retornar esse valor então galera é só recapitulando toda vez que vocês forem criar uma nova tabela no banco de dados ou forem fazer alguma alteração numa tabela já existente criem uma graxa para isso E aí aqui vocês vão mudando para ver um V2 V3 v4 a cada atualização vocês mudam essa versão porque assim a gente está guardando um histórico do nosso banco de dados então aqui a gente vai conseguir ver desde o começo como é que ele era até o final de como é que ele
é hoje indicando para o flyway também que teve atualizações e que ele precisa fazer essas alterações lá no nosso banco de dados e ele faz tudo isso de forma automática então a gente não vai precisar entrar aqui no nosso terminal e ficar rodando comandos skl para mexer no nosso ponto de Base a gente cria que o arquivo SQL com os combadinhos que a gente quer que a gente Execute mas o Flyer cuida de tudo o resto para nós então pessoal para Esse vídeo foi isso Eu espero que vocês tenham gostado e se você gostou não
esqueça de deixar seu like e se inscrever aqui no canal para acompanhar mais conteúdos gravação e tecnologia esse vídeo vai ficando por aqui valeu