Fala galera tudo bem com vocês boa noite e aí vão me dando um oi quem já tiver aí na Live vai me dizendo se o áudio Tá ok Você já sabem né aquilo de sempre me disse a câmera Tá ok seu áudio Tá ok se vocês estão ouvindo tudo certinho que aí a gente já vai começar Vou esperar vocês me dando um oi aqui e enquanto isso eu já vou explicando como é que vai funcionar a Live de hoje então a Live de hoje vai ser que nem a gente sempre faz os nossos Live codes
aqui eu de cabelinho molhado rodando algo do zero com vocês então eu trouxe aqui para nossa Live de hoje um template inicial para o projeto que a gente vai fazer então eu configurei ali só as dependências que a gente vai usar Não fiz nada além disso mas eu fiz para a gente não precisar fazer aqui durante a Live não perder muito tempo e focar mais no conteúdo e eu vou deixar o link aqui para vocês do repositório com template Inicial Caso vocês queiram já ir baixando clonando aí ou deixar para clonar depois e assistir a
Live enfim que vocês quiserem fazer Opa já tô vendo aí a galera me dando Oi oi boa noite Que bom boa noite galera Então vamos começar a primeira coisa que eu vou fazer é mandar o link aqui para vocês com o repositório do github para vocês já deixarem salvo aí e já irem acompanhando E aí eu vou abrir um notion que eu preparei para gente aqui hoje então eu fiz algumas anotações para a gente seguiriando aqui hoje e para vocês consultarem depois se vocês quiserem a última vez que eu fiz Live sobre no DJs tenho
tá aqui gravado no canal Eu trouxe um notionzinho com alguns bulletpoints Alguns Pontos importantes se vocês gostaram bastante e aí dessa vez eu trouxe novamente esse notion para a gente se guiando e para você salvarem aí depois caso queiram dar uma repassada no conteúdo o GG Itália mandou uma mensagem falou Oi manda um salve para mim então salve para ti e aí galera ai coisa boa ver vocês mandando um oi aqui Então já vou começar compartilhando a minha tela deixa eu abrir aqui O OBS eu tô só com uma com uma tela Como você sabe
eu não tô em casa eu não tô no meu setup então eu tô só com um monitor então a minha tela vai estar dividida aqui entre os comentários e o inteligente vai ser onde a gente vai rodar hoje então Não se preocupem se vocês verem os comentários aqui na lateral e porque eu tô tendo que deixar tudo na mesma tela para conseguir acompanhando os comentários aqui de vocês durante a Live Boa noite galera boa noite você vai ensinar a hospedar também não hoje a gente só vai construir api não vamos fazer Deploy mas eu já
tô planejando o vídeo para o canal para a gente fazer o Deploy da aplicação porque assim se a gente for fazer aplicação do zero completa mas depois mais testes sanitários isso toma bastante tempo então o que que eu tô fazendo eu tô quebrando esses conteúdos primeiro um conteúdo onde a gente constrói depois um conteúdo a gente vai escrever os testes unitários depois um conteúdo onde a gente vai fazer o Deploy dessa nossa aplicação então eu faço o recorte né desses conteúdos porque fica melhor para mim gravar e melhor para vocês assistirem também porque senão imagina
uma vídeo um tutorial de quatro horas fica maçante né Então para mim fica melhor a qualidade se eu for ir cortando e fazendo aos poucos e aqui como eu vou Fazendo tudo sozinha vou editando meus vídeos etc às vezes demora um pouquinho mas esses conteúdos já estão no Word map do canal então para sair tem várias sugestões que vocês me mandam lá no Instagram Então se vocês não me seguem lá no Instagram vão lá no arroba aqui perto Me sigam por lá mandem sugestões dúvidas e perguntas que sempre quando eu posso eu vou respondendo cada
um de vocês por lá então se tu tiver alguma sugestão de vídeo que tu gostaria ver aqui no canal algum Live code que tu gostaria que tivesse aqui no canal manda lá na adm que eu sempre vou pescando sugestões de vocês e vou botando na minha lista de tudos Então bora começar o conteúdo eu vou compartilhar aqui o meu notion já tá aqui o notion em tela e eu vou mandar o link do notion para vocês para vocês conseguirem acompanhar Caso vocês querem então vou colar aqui no chat também o link do notion e o
que que eu trouxe aqui no nosso notion eu trouxe os thudos do que que a gente vai fazer hoje e alguns comentários como eu falei para vocês alguns Bullet points Pontos importantes então aqui em cima tem o template inicial do projeto que é onde a gente vai partir é da onde a gente vai partir Hoje a gente vai partir desse ponto aqui eu já mandei o link aqui no chat para vocês e o que que a gente vai fazer bom o que que a gente vai construir aqui hoje é um crude usando Java Spring então
um grude a gente tem que ter o método de get post E delic então a gente vai listar dados postar novos dados atualizar esses dados e deletar os dados também e consequentemente para fazer o manuseio dos dados a gente precisa de um banco de dados que vai armazenar esses dados né que vai armazenar onde a gente vai consultar atualizar etc então eu já vou trazer um conceito de my greations aqui para nós já tem vídeo de My greations aqui no canal criando my greations com flyway cappel Jales também hoje eu vou usar o flyway também
a gente vai dar uma passadinha mais rápida porque já tem vídeo aqui no canal mas a gente vai criar my gracious e a gente vai criar também um Exception render então quando a gente está falando de uma pi é tipo assim 100% comum acontecer exceções então às vezes ali tá rodando né algum processamento alguma requisição e Acontece uma exceção algum erro etc e a gente precisa lidar com esses erros e lidar com eles e retornar uma resposta que seja amigável ao cliente da nossa epi e que seja intandível né O que que rolou né O
que que aconteceu erro foi alguma culpa do cliente ou só foi algum Erro interno do Servidor Então a gente vai criar um Exception render aqui hoje também para fazer o tratamento desses erros Então bora começar eu já tô com inteligey aqui com o meu Opa abri outro projeto eu tava aqui programando antes e deixei os as duas Abas do Inter de aberta bom eu já tô aqui com o meu inteligeia aberto nessa nesse template que eu mandei para vocês então o que que tem aqui dentro da minha aplicação Java mas já Spring cru não tem
quase nada aqui dentro Eu iniciei aplicação ele vem com a minha classe como se fosse a classe Man do meu projeto Então essa aqui é a classe de entrada é que inicia a minha aplicação então para a gente indicar isso para o Spring que essa é a classe principal é a que inicia a nossa aplicação a gente coloca essa anotação aqui que é springboot application dessa forma o Spring consegue entender que essa é a classe de entrada da minha aplicação é a classe que vai iniciar tudo e aqui dentro a gente tem um método Man
que é o método que dá o início para tudo que faz o Build de tudo e o que mais tem aqui dentro bom a gente tem esse server a gente a laser é basicamente uma configuração do Spring boot com um serverlast tom cat etc para iniciar um servidor web só que a gente não precisa se aprofundar muito a gente tem essa pasta resources que aqui dentro ainda não tem nada então todos os meus todos os meus as minhas pastas aqui dentro estão vazias só que tem esse arquivo aqui que é muito importante que é o
application proprietes mas eu já vou explicar o que que ele significa então é basicamente isso que tem na nossa aplicação e como é que né como é que eu cheguei nesse template aqui Inicial bom sempre quando a gente tá iniciando uma aplicação com o Java Spring é muito comum a gente usar o Spring littylighter o springite a laser é uma ferramenta que auxilia a tua iniciar o teu projeto Spring com todo border playlist necessário então antigamente quando não existia o Spring ling eu não era dessa época Mas eu vejo bastante a galera falar Tipo tu
precisava configurar todas as dependências na mão todo o teu servidor na mão etc aí o Spring foi trazendo alguns pacotes para nos auxiliar isso então por exemplo o Spring web start web configura todo o servidor web para nós sem que a gente precisa fazer muita configuração é só instalar dependência que ele já configura e aqui no springite a Lázaro a gente consegue iniciar Nossa aplicação Spring adicionando as dependências que a gente quer então por exemplo adiciona a dependência do Spring web eu adiciono a dependência do flyway que é das minhas my greations eu adiciono a
dependência do meu post se eu vou usar o banco de dados post ou se eu vou usar o mais seco eu venho aqui adiciono o driver do mysecco enfim aqui eu vou adicionando as dependências que eu vou usar então eu escolho a versão do Java aqui que eu quero utilizar eu escolho Qual o meu meu pack de manager por exemplo que eu vou eu usei o maven e escolha a minha versão do Spring boot também E aí eu Gero aqui meu arquivo eu vou baixar um zip descompacto esse Zip abra no meu inteligente e é
isso aqui que vocês estão vendo pronto Essa é a minha aplicação e as dependências da nossa aplicação eu tô dando esse overview aqui de uma aplica para quem nunca mexeu ou não conhece para ficar um pouquinho mais por dentro mas eu vou passar por isso aqui rapidinho aqui no nosso arquivo pum ponto XML para quem é lá do JavaScript esse aqui seria como o nosso pack de Jason então lá no nosso pack de Jason do JavaScript a gente bota nossas dependências o punchesml é a mesma coisa que dentro a gente bota as dependências do nosso
projeto então aqui ó estão todas as dependências que eu coloquei para criar esse template inicial do nosso projeto então aqui tá o springboot Starter web springbuth deve Tools que é para ter um hellow de automático que é para as anotações e geração de código para testes o JPA validation e o post mas são as dependências que eu tenho aqui eu vi aqui uma pergunta no chat do João e ele perguntou assim ó pergunta de lavig Java o Spring seria equivalente ao next JS sim é bem parecido Samsung é um Framework para Java para construção de
aplicações de servidores e unespj para quem não conhece é um Framework para node GS então sim eles seriam mais ou menos equivalentes o Spring para o Java e o Next is para o note é basicamente isso e o Jerônimo aqui perguntou também em Java também tem my greations e a gente vai fazer my greations aqui hoje inclusive a gente vai usar um ORM então para quem é lá do node do back ange sabe o que são RMS a gente vai usar um RM o RM aqui também no Java que se chama o Java JPA esse
aqui ó essa dependência aqui que vai ser o nosso ORM hoje então bora começar a primeira coisa que a gente precisa fazer na nossa aplicação Ah não só um comentário Caso vocês tenham instalado o projeto aí vocês tem que instalar dependência né as dependências como é que a gente faz isso bom se vocês abrirem o arquivo pum XML provavelmente vai aparecer aqui no canto umemezinho do maven vem e um íconezinho de Reload se vocês clicarem nele ele já vai instalar as dependências porque o mês em detecta que tem dependências aqui no punchesml que não estão
instaladas ele te sugere ó não quer dar uma atualizada pegar os as dependências aí vocês podem fazer assim se não aparecer vocês podem vir aqui no canto clicar em maven E aí vir aqui em grude lifecycle e clicar em stool E aí com esse sol aqui dando start ele vai instalar as dependências quando as dependências já tiverem instaladas como é que a gente verifica se elas já estão porque vai aparecer essa pasta aqui escrita dependências e aqui vai estar listada todas as dependências que já foram instaladas então aqui para mim eu já tinha instalado Antes
aqui eu cliquei sem querer para instalar de novo mas não tem problema ele só vai instalar e e segue vida Beleza então a primeira coisa que a gente tem que fazer numa aplicação web é criar o nosso os nossos endpoints Então a gente tem que criar os indypoints da nossa aplicação e como é que a gente faz isso bom a gente cria normalmente segue o padrão de controllers o que que são os controllers o Controller é a camada da nossa aplicação a camada do nosso servidor que vai receber a requisição Então os controles normalmente são
responsáveis pelos points eles recebem os requests com o body com haver etc e aí chamam as pessoas ali dentro da minha aplicação as pessoas eu digo os componentes da minha aplicação que são os responsáveis por fazer os processamentos Então o meu controle vai chamar o service necessário vai chamar o repositor etc então eu gosto muito de aqui dentro da raiz do meu da meu projeto que aqui no meu ponto com exemplo ponto cruz para quem não sabe isso aqui é padrão dos projetos Springer anota esse com um exemplo ponto e aí o nome da tua
aplicação eu gosto de criar um novo pacote o pacote seria uma nova pasta Então vou vir aqui em mil Packet e eu vou criar a pasta controllers então aqui ele vai declarar um novo pacote que é o pacote de controles deixa eu ver aqui o Ramon tava falando que teve um erro quem resolve plugin agora ele atualizou e rodou boa era isso mesmo é porque não tinha instalado ele pode dar esse erro mas aí quando tu instala as dependências ele dá tudo certinho tá aí eu criei a minha pasta de controles aqui dentro da minha
pasta de controles eu vou criar uma nova vou vir aqui ó botão direito New Java classe essa minha classe vai ser o primeiro controle da nossa aplicação então aqui eu ainda não tinha pensado num tema tipo assim específico para nossa aplicação então a gente pode criar uma pi que lista produtos pode ser produtos fingimos que é um e-commerce produtos Então vou criar aqui product aqui ele tá me perguntando se eu quero adicionar esse meu arquivo ao Git então sabe quando a gente faz o Git é de ponto e adiciona todos os arquivos que foram modificados
ao start do Git para depois poder comentar esse aqui é a mesma coisa ele tá perguntando se eu já quero adicionar para eu depois comentar eu coloquei que sim mas aqui não faz muita diferença agora bom e como é que eu vou avisar para o Spring que essa classe aqui que eu criei é um Controller bom E aí que vem as anotações que eu tava falando para vocês então eu vou abrir aqui meu notion que eu já trouxe uma explicaçãozinha para gente aqui hoje então as anotações são usadas para habilitar e configurar recursos específicos do
Spring permitindo que você defina o comportamento do seu aplicativo de maneira declarativa o frameworkspring detecta essas anotações durante o tempo de execução e toma as ações apropriadas com base nas configurações fornecidas eu trouxe essa explicação aqui mais formal até botei que como um Coach mas o que que é essas anotações é isso aqui ó aqui na minha classe principal tá vendo que tem esse arroba springbut application só que é uma anotação isso aqui é a forma de eu avisar para o Spring na hora dele começar a Executar aplicação que essa aqui é a minha classe
principal é a classe da minha aplicação ele vê essa anotação aqui bom ele já sabe que essa aqui é a classe principal então é essa classe aqui que ele tem que rodar o método Man e aqui nos controllers como é que a gente avisa para o Spring que isso aqui é um Controller bom a gente vem aqui e coloca anotação rest Controller rest por quê Porque é uma epiresh que a gente vai implementar aqui hoje e a gente tá implementando um Controller dessa nossa Happy West E por que que ele usa esse essas anotações bom
para quem já é familiarizado com programação orientada objetos sabe que toda vez que a gente vai criar uma classe e precisa executar os métodos dessa Classe A gente tem que criar uma Instância dessa classe então a gente distancia a classe pega essa Instância e executa o método que a gente quer ou quando a gente precisa classe receba uma outra Classe A gente passa para ela a gente distancia a classe que eu quero passar para outra então eu faço uma estância E aí eu pego essa Instância e passo para o Construtor dessa outra classe Então essa
ser uma forma de passar uma classe por parâmetro né E aqui no spring vocês vão notar que a gente não faz isso em nenhum momento eu vou em silenciar esse meu brother eu não extensio ele quem vai distanciar para mim é o Spring Run time então quando o Spring começa a rodar ele cria todas as instâncias necessárias através das anotações ali que a gente vai dando na nossa aplicação e a gente consegue colocar anotações também para dizer que eu tenho que inventar injetar dependência naquela classe etc e ele faz todas essas estanciações e injeções de
dependência para mim a gente delega essa responsa essa responsabilidade porque para quem não sabe quando a gente está trabalhando no projeto com po né programação oriental do objetos é muito fácil a gente chegar com classes gigantescas que tenham muitas classes que elas têm que receber por parâmetro né várias instâncias de classe que elas precisam receber e acaba que a gente cria classes Monstros porque para eu criar uma nova Instância daquela daquela classe eu tenho que distanciar diversas outras classes para conseguir pegar essas instâncias e passar para o parâmetro para essa classe então é por isso
que essa anotação aqui de controle surgiu para a gente evitar precisar criar arquivos que ficam criando várias instâncias né para passar para uma Instância de uma classe Enfim então é por isso que surgiu para quem já fez aplicação já fez algum servidor node sem usar o net por exemplo e tentou implementar usando classes provavelmente já passou por isso tu vai receber Cada vez que a tua classe tem mais dependências e aí tu vai ter que criar mais distâncias para essa classe tu acaba tipo criando factors por exemplo só para distanciar aquela classe passar todas as
instâncias que ela precisa todas as dependências enfim eu desço explicada para vocês entenderem Qual é a facilidade que o Spring nos traz né então aqui eu trouxe algumas anotações que são comuns são comuns Então a primeira rest Controller que a gente acabou de utilizar ali que é para indicar que aquela minha classe é um Controller E aí tem essa anotação aqui que é o request mapping é como a gente vai explicar para o Spring para o Spring Qual é o endpoint que esse meu controle aqui toma conta porque aqui eu só disse que ela é
um Controller mas eu não falei momento nenhum para o Spring Qual é o ind Point que é esse controle aqui escuta né então aqui eu coloco request map e eu vou colocar aqui por exemplo barra product aí eu sempre me perco aqui com meu teclado Você já sabe quem assiste as lives sabe que eu sempre me perco meu teclado porque eu tenho no teclado de português de Portugal e do português do Brasil aí eu sempre tro então como é Quest mapping eu aviso para o string Qual é para o Spring Qual é o endpoint que
esse controle aqui é responsável Qual é a ponte que esse controle aqui vai ouvir E aí Aqui tem a notação autoward também que é uma anotação para indicar que essa dependência deve ser injetada na minha classe então agora a gente já vai utilizar vocês vão entender menor tem a notação de componente por exemplo para indicar que uma classe é um componente Então nem todas as classes da nossa aplicação vão ser um Controller por exemplo você é um repository pode ser que eu tenha só um service ou só um componente que é só responsável por algumas
coisas mas que não chega não seja não chega a ser um Controller por exemplo então eu uso essas anotações e tem outra anotação bem legal também que é o resto de Controller Advice Essa é a anotação que a gente usa para mostrar para o Spring que uma classe responsável por tratar exceções então espreme sabe quando essa classe possui essa anotação ele sabe que ele pode passar por ela e procurar assim algum método que trata a exceção que foi lançado em One Time mas isso a gente vai entrar mais a fundo também daqui a pouco bom
então deixa eu ver aqui o chat eu vi que tem alguns comentários o pessoal perguntando sobre a ideia que eu tô usando é o intelligey e é o inteligei gratuito galera eu não tô usando pago aqui é o gratuito e é bem bom bem completo E Se vocês quiserem eu boto o link aqui do gratuito aqui no chat mas é bem fácil só joga no Google intelli download e vai aparecer eu acho que é isso acho que não tem nenhuma dúvida ou o Alex Alves perguntou Spring é um filme de AVA para criar aplicações brecht
sim é um Framework de AVA para criar aplicações bacana mas não só o resto aqui a gente pode criar outros tipos de API de apis com Spring também Red full é um padrão Mas pode criar a gente pode criar outros padrões também então aqui para Agora eu já tenho meu controle definido eu já disse que ele cuida do endpoint project Mas agora eu tenho que indicar um método né então por exemplo quando eu quero fazer um get na minha aplicação eu vou fazer um get para Barra product e eu preciso indicar que qual o método
que vai cuidar desse GAT então eu faço isso através de notação também então vou vir aqui deixa eu só mudar de teclado vou ver aqui e vou colocar get map dessa forma eu tô dizendo para o string que essa esse método aqui que eu tô declarando agora é o responsável por cuidar das requisições que baterem/prod e sejam do método get aí eu vou dar um nome aqui tipo get ou protheus sei lá e vou declarar a minha classe aqui eu coloquei minha classe como voz mas a gente não vai deixar ela retornando void né porque
Qual o sentido de eu fazer um get não retornar nada se eu tô fazendo aqui um get All products então aqui a gente vai ter que montar uma resposta mas antes disso ah eu acho que a gente já pode montar a resposta aqui para a gente montar respostas no spring tem uma uma classe que se chama respoence esse responde para quem está acostumado com node também talvez com Express e o fast Fly lá a gente recebe nos nossos nas nossas funções ou até nos nossos métodos que são responsáveis por cuidar de a gente points a
gente recebe normalmente um request e um responde E aí com esse a gente pega os valores que estão no header então no Bora e responde a gente usa para retornar para o cliente uma resposta e aqui no spring esse responde seria equivalente a resposta lá do Express por exemplo então aqui eu posso fazer por exemplo retu então aqui não é um parâmetro que eu tô recebendo é só uma classe mesmo que é a classe padrão para montar respostas para mandar para o nosso cliente então aqui eu posso botar por exemplo return Ok então ok vai
ser o 200 e eu vou botar aqui ó deu Ok eu vou botar só isso E agora a gente vai testar essa nossa requisição para deu certo tipo o pessoal sempre falar já é muito complicado é muito verboso sim Acaba ficando um código mais verdoso por causa das dos pacotes das classes etc mas é bem simples também quando a gente quer construir uma coisa simples o Java o Spring nos permite fazer isso de uma forma bem rápida então vocês veem o que que eu criei um método get em dois segundos criei aqui um método aqui
dentro Peguei mais Consciente e retornei um deu Ok e pronto então aqui eu vou executar minha aplicação para a gente só ver tá funcionando ela tava rodando aqui já eu vou pausar E aí como é que a gente faz para executar a nossa aplicação aqui dentro do inteligente eu venho aqui na minha na minha classe crood application e eu clico nesse botão verdinho aqui é esse botão aqui eu que faz o Run da minha aplicação então ele vai iniciar aqui um novo terminal ele abre aqui mais uma janela no terminal E é assim que ele
terminar de iniciar aqui meu servidor eu já posso ir lá no meu Story já parou de dialogar Então quer dizer que ele já iniciou o servidor Então eu posso ir lá no nosso insônia e posso disparar aqui uma requisição para Barra product e ele tem que me retornar um deu Ok pronto é justamente que a gente configura lá o insônia para quem não sabe é uma plataforma uma aplicação para a gente testar requisições para o nosso pé Candy é tipo o Postman e aqui eu já tinha configurado um beijo URL então aqui no nosso insônia
a gente pode configurar em varmentos e aqui os invariaments basicamente variáveis de ambiente é que eu declarei uma variável de ambiente chamada base your que é o ind Point aqui da minha aplicação a minha aplicação tá rodando no local roxo local na porta 8080 então eu configurei essa aqui como a minha URL padrão e eu aqui eu usei essa variável da minha URL padrão/prodact para quem não sabe usar as variáveis é só a gente colocar aqui ó contra o espaço ele vai mostrar as variáveis disponíveis as variáveis são essas roxinhas aqui ó dá até para
ver que tem um X que é para indicar uma variável eu clico nela Pronto ele já adicionou a variável aí aqui eu boto um barra brother que é o and Point lá que a gente acabou de criar manda aquisição o que deu Ok então agora Opa eu abri o navegador Então agora que a gente já entendeu mais ou menos aqui como funciona o nosso controle no spring antes da gente listar o produtos a gente precisa criar produtos para ter produtos para criar Ou pelo menos criar a nossa tabela no banco de dados E aí ter
ela vazia por exemplo para então conseguir pelo menos retornar uma Rei vazio então agora a gente já vai passar para criação das nossas mygrations e do nosso repositor vai só tomar uma água e dá uma lidinha aqui rapidinho nos comentários Quais são esses padrões que é possível construir com Spring um dos padrões é o padrão web comum por exemplo esses dias até eu falei lá no Instagram que num api Rust autenticação é stateles então quando o usuário se autentica na minha aplicação ele se autentica através de tokens e esse token são mandados em toda a
requisição eu não guardo na minha memória aqui no meu servidor a sessão dos usuários então não guardo sessões ativas não guardo IP dos usuários não guardo nada Porém tem padrões de servidores que aí não é mais rastul onde a gente é um tem autenticação Station que aí eu vou ter estado vou guardar o estado e aí por exemplo não Spring a gente pode implementar esse tipo de servidor onde eu tenho sessões eu guardo sessões dos meus usuários aí guarda de peito etc tem normalmente as aplicações web mais antigas são construídas nesse padrão eu esqueci exatamente
o nome do padrão Mas essa é uma das Diferenças por exemplo do haste para esse outro tipo de padrão vamos ver se tem mais alguma dúvida a Live vai ficar gravada sim sempre ficam gravadas aqui no canal e acho que de dúvida é isso ah só respondendo uma pergunta do Lucas rapidinho Fernanda você acha que tem espaço para Júnior no mundo javam é verdade que as empresas com esterg Java não costumam pagar iniciante eu acho que tem espaço para Júnior no mundo Java assim lá na minha equipe onde eu trabalho a gente tinha um estagiário
e ele veio para trabalhar com Java com nós então a mulher estagiário beckinge trabalhava com Java normal ele não se eu não me engano acho que ele não tinha experiência antes e veio lá para trabalhar com nós no Beck e a gente tem colegas lá que são Junior trabalham com beck também eu também sou Júnior por exemplo lá então tem espaço Sim eu sou Júnior mas para transição para pleno já tô ali né com um pouco mais tempo de experiência mas eu com certeza acho que tem espaço bom então vamos continuar aqui perguntaram quanto tempo
tu tem quanto tempo programando 3 anos tá então a gente vai ter que criar a nossa tabela no nosso banco de dados e a gente precisaria criar também o nosso da base aqui então eu vou abrir aqui o post Chico para quem não sabe o postiko é um programa gerenciador de banco de dados que é justamente que é para o post então se eu tô usando mais ciclo provavelmente vai ter um programa gerenciador de bancos dados para o mais rico esse aqui o postiko é um para o post e ele é usado Ele só tem
para o Max se eu não me engano mas tem outros para para Windows e para Linux também mas o que eu vou fazer só para a gente conseguir visualizar o nosso banco de dados aqui para a gente não precisar ficar mexendo no banco de dados via terminal com um postinho que eu consigo visualizar as minhas tabelas então é por isso que eu quis trazer ele aqui que aí Vocês conseguem visualizar também então por exemplo aqui dentro o meu Day na base local tá rodando meu post então a única coisa que eu fiz a única coisa
que vocês precisam fazer é instalar o postres só isso instala o post na máquina de vocês e peguem o usuário e a senha de vocês o usuário e a senha vocês vão criar assim que instalarem o banco de dados então quando tiver ali no processo de instalação ele já vai pedir para vocês colocarem um usuário e senha conhecer o usuário e senha Vocês conseguem logar no banco de dado de vocês o lembrei o nome da aplicação que é para o Windows e Linux admin então baixem aí o PG admin o PG admin é como se
fosse o postiko aqui que eu tô utilizando E essas aplicações são muito boas porque a gente consegue visualizar o nosso banco de dados então tendo instalado o post localmente configurou a senha configurou o usuário instalou o PG de mim vocês entram lá no PG de mim Vão colocar a senha e o Vão colocar o usuário e a senha do Banco de vocês que vocês acabaram de instalar E aí ele vai abrir uma coisa parecida com essa que vai ter todos os da bases que tem dentro do postres local de vocês aqui dentro do meu postal
local eu tenho alguns dele a base então por exemplo eu tenho esse aqui food e dentro desse meu dedo a base food eu tenho duas tabelas aqui eu tenho outro dele a base Fernando aqui porque só tem uma tabela dentro então eu posso vir aqui e criar um novo dele a base e dá um nome para esse então aqui eu vou te dar um nome de produt dentro desse dinheiro a base vai ter tabelas aqui dentro só que essas tabelas a gente não vai criar manual a gente vai criar com as my greatines a gente
vai criar com flyway Então eu só vim aqui mostrar para vocês o meu processo normalmente que eu faço para rodar local Quando a gente tiver fazendo criação do nosso post por exemplo lá no WS da vida a gente vai fazer essa configuração Inicial também a gente vai criar pelo menos o nosso da base lá de uma forma mais manual depois a criação de tabelas atualização de tabelas é tudo via código Tudo via my greations por exemplo mas essa criação aqui do daira base normalmente costuma ser manual eu vou lá e Crew desde a vez mesmo
assim então depois do deira base já criado então aqui eu criei um deleira bem chamado prod por que que eu preciso saber o nome desse era base bom porque aí volta o application aqui que eu tava falando para vocês esse arquivo aqui aplication é um arquivo de configuração do Spring então aqui o Spring recebe as configurações que a gente pode fazer então por exemplo aqui a gente pode configurar o modo da resposta de folder Spring a gente pode configurar o modo como ele retorna nas sessões para o cliente caso eu não tenha nenhuma classe que
lide com essas exceções eu posso fazer várias configurações do meu Spring eu posso mudar o comportamento the folder e através desse aplication quase todas as configurações ficam aqui e a gente vai ter que configurar aqui também qual é o meu banco de dados e qual é o usuário para acessar esse meu banco de dados e qual é a minha senha só que isso aqui não é especificamente dois Spring comum Isso aqui é uma coisa do JPA então eu vou abrir aqui de novo o meu notion para vocês para explicar melhor então o Spring JPA já
aba persistente persistence do Spring então Spring como eu falei para vocês ele tem vários pacotinhos vários módulos E aí a gente vai instalando esse sub pacotinhos à medida que a gente vai precisar então a gente pode criar ali uma aplicação Spring bem crua e vai adicionando esses Paco para adicionar mais funcionalidade a nossa aplicação e o JPA é um pacote para lidar com persistência de dados ou seja manipulação de banco de dados então Ele oferece uma abordagem simplificada para trabalhar com persistência de dados em aplicação Java ele é uma implementação JPA uma especificação padrão da
plataforma Java para mapeamento objeto relacional que é o orn então como eu tava falando lá no início da Live vocês tinham mandado aqui no chat também para os usuários de node para quem mexe com load o JPA é como se fosse o Type o RM o prisma aqui para o Jales spriming é onde a gente vai criar as nossas entidades nosso repositórios e manipular tudo via classes e objetos então a gente não vai fazer manipulação de SQL puro a gente vai usar o JPA e aquela configuração que a gente estava fazendo aqui no nosso application
é uma configuração do JPA então a gente precisa indicar para o JPA Qual é o banco de dados que ele vai ter que consumir Qual é o user name que ele usa para alugar e qual é o password que ele usa também então aqui ó vou entrar eu já configurei aqui mas o que vocês vão precisar fazer colocar spring.dersource. URL e colocar a URL do banco de dado de vocês então aqui é o URL do meu banco de dados local ele normalmente fica JBC dois pontos barra barra louco e porta 54 32 isso aqui é
padrão do post então para vocês descobrirem Qual é o URL local que tá rodando no banco de dados de vocês localmente vocês procuram o URL padrão para banco de dados mais rico o RL padrão para banco de dados Poxa mas aí vocês descobrem isso aqui rapidinho Porém tem uma diferença aqui no final aqui no final eu coloco essa barra isso aqui é para indicar para o JPA Qual é o da base que você sabe então aqui e eu tava acessando o Partners que era uma outra aplicação que eu tava fazendo mas aqui no caso a
gente vai acessar o Day a base produtt que foi o que a gente acabou de criar aqui então eu criei aqui um dele a base que tá vazio não tem tabela nenhuma aqui dentro dele e aqui eu indico ó tu tem que acessar o URL Onde está rodando o meu banco de dados e acessar o da base product e aqui no spring.user Name eu boto o user name de acesso ao meu banco de dados e o password que é a minha senha para acessar meu banco de dados e aqui é minha senha é pastor bem
criativa né bem segura pronto feito essa configuração no application pronto o Spring o JPA já vai conseguir acessar no nosso banco de dados e o Flyer e também já vai conseguir executar as my greations dentro do nosso da base para criar as tabelas atualizar as tabelas etc Então vou parar só para dar uma lida nos comentários porque eu vi que bastante comentários aqui e eu prefiro já ir lendo para não acumular bastante comentários para o final da Live já estudo programação é normal se sentir perdido assim às vezes vendo alguém falar de algo que tu
não tem muita familiaridade isso é super normal eu às vezes também entra numas lives das pessoas falando sobre Swift por exemplo que é de Moble e eu às vezes não entendo nada porque eu não tô acostumada a programar com Swift não sou do mundo eu tô vendo aqui que vocês estão falando da fofoca do que teve hoje não vou comentar O Calebe mandou uma pergunta explica rapidinho o conceito de loco roxo e portas isso sempre me confunde trabalhando com apis como isso se relaciona com as apis bom louco host seria o domínio do da minha
eu seria o meu domínio local então sabe quando a gente entra aqui no Google e eu jogo aqui facebook.com por exemplo só que é o domínio do Facebook é o endereço onde está o domínio seria o endereço web Onde está hospedado esse servidor e quando eu coloco aqui facebook.com por baixo dos panos isso aqui vira um endereço IP depois mas isso aí é meu provedor de internet que faz ele vai lá consulta no servidor DNS enfim mas esse domínio é para fazer o mapeamento dos endereços dos Servidores então tu na tua casa Tu não mora
na rua por exemplo eu moro na Rua Dom Pedro número 2 o domínio seria para indicar o endereço da onde fica aquele servidor para o nosso provedor de internet saber onde ele deve buscar esse servidor para mostrar a página para nós então aqui quando a gente tá falando de louco ao host louco o rosto é uma forma de eu indicar para o meu para o meu insônia aqui por exemplo ou para o meu Spring aqui que eu tô configurando que o domínio que ele tem que bater é o loco roxo quando eu falo que o
domínio é o loco roxo e fala que é o domínio local então eu não preciso buscar nada fora é aqui localmente mesmo local host é o domínio da execução local e as portas é porque assim ó imagina que se um PC um PC só pudesse executar um servidor isso seria por exemplo para Amazon seria muito ruim porque se eu tivesse um PC executando só um servidor para todo servidores que estão hospedados dentro da Amazon eu ia ter que ter um PC para cada um desses servidores não não faz sentido Então as portas é uma forma
de eu indicar Tá eu já sei o endereço de p é aqui É nesse PC aqui que tá esse servidor mas a porta é uma forma de indicar o número da casa então eu moro na Rua Dom Pedro Beleza o louco roxo é a Rua Dom Pedro Dom Pedro Dom Pedro a porta aqui que a gente usa é o número da casa então eu tô na Rua Dom Pedro a casa 200 então aqui eu tô no local host na porta 5432 entendeu Acho que essa essa comparação fica mais fácil de entender então aqui para o
Spring saber onde tá o meu banco de dados porque o nosso banco de dados ele roda no servidor também né o nosso banco de dados é um servidor que funciona como um banco de dados mas aqui quando eu tô acessando esse banco de dados eu tenho que bater nesse servidor também lá e acessar ele então quando eu tô configurando aqui para o Spring para o JPA que essa aqui é o endereço onde está meu bando de dados ele sabe onde ele deve fazer esse acesso e quando a gente está configurando a porta da nossa pi
por exemplo a minha api tá rodando na porta sei lá 3.000 quando eu venho aqui no meu navegador eu coloco roxo 3000 para conseguir acessar Acho que ficou mais claro não sei se tipo se litou entender se tu não entendeu daí coloca aqui nos comentários de novo que eu tento explicado uma outra forma mas eu acho que que ficou que ficou mais claro bom deixa eu ver aqui gente o esquema é repetição façam várias vezes grude que vocês vão ficar que nem ela é exatamente isso gente tem que repetir várias vezes praticar praticar praticar tu
vai aprendendo bom então vamos continuar já configurei aqui meu application para indicar para o JPA e para o flyway Onde tá o meu banco de dados Qual é o banco de dados que ele tem que fazer a consulta quais presenciais então agora vamos primeiro criar nossa primeira myreation Então antes da gente criar as nossas myreations é bom a gente parar Nossa aplicação porque senão às vezes pode dar um erro porque o Flyer vai tentar executar my gratidão assim que ele identifica que tem uma nova um novo arquivo de my grancho E aí eu posso estar
escrevendo escrever errado e ele executa E cria a tabela errado aí depois vou ter que ir lá e apagar então é melhor parar Nossa aplicação e só estar de novo depois de eu terminar de ter criado a minha my greath então voltando lá para o nosso notion no contexto dos bancos de dados elas são uma uma prática para a gente gerenciar as alterações na estrutura do nosso banco de dados ao longo do tempo de uma maneira controlada e rastreável bom Que que isso significa as my grangers é como se fosse um Git um Git né
controle devercionamento para o nosso banco de dados então toda vez que eu crio uma nova tabela ou eu altero uma tabela eu faço um drop de uma tabela é bom eu tenho um arquivo de my greations que mapeie toda a evolução do meu dedo a base porque vai que eu vou migrar meu Deus para outro lugar através dessas my grations eu consigo criar todo o esquema do meu banco de dado de novo Só usando as migrations que eu tenho ali ou se eu preciso criar um backup do meu banco de dados Então eu tenho um
backup e preciso criar meu banco de dados de novo com toda a estrutura que eu já tinha antes em vez de eu ter que adivinhar foi o comando esquele que eu rodei aqui para criar a minha tabela ai depois eu alterei essa tabela e adicionei uma coluna ah depois eu removi uma coluna não a Magritte eu já deixa tudo ali registrado o histórico do nosso banco de dados para nós então ele deixa registrado o esquema do nosso banco de dados o que que é o esquema é o esqueleto do meu banco de dados são as
tabelas e as colunas que tem dentro do meu banco de dados então pra gente criar my greations aqui na nossa aplicação Spring a gente vai ter que vir aqui nessa pasta resource então vocês podem ver que os nossos arquivos Java tá bom aqui dentro da pasta Java foi onde a gente criou o nosso controle onde tem aqui a classe principal da nossa aplicação e a nossa my granion ela vai ficar dentro da pasta resorts e aqui dentro dessa pasta resorts eu vou fazer eu vou criar uma nova pasta chamada DB e eu vou criar mais
uma nova pasta chamada my Rush então eu vou até excluir essa pasta aqui que eu tinha criado que tá vazia deixa eu ver aqui cadê de Elite e vou criar aqui ao vivo para vocês verem Então vou vir aqui em resorts resorts é onde ficam os recursos da minha aplicação Então são coisas que não são arquivos de água mas fazem parte da minha aplicação aqui as my greations são arquivos SQL então eu deixo aqui dentro de resorts e aqui essa é a forma do Flying identificar também que esses arquivos aqui são my greations Então até
coloquei aqui no notion para vocês ó que a gente vai ter que para criar uma my grancho basta a gente criar um arquivo dentro da pasta resorts/db/h Então vou vir aqui em Resorts vou colocar New Packet directory aqui dentro eu vou criar o diretório DB aí dentro do diretório DB 1000 eu vou criar o diretório my greathion Mas eu sempre me esqueço e aqui dentro dessa minha pasta my granion eu vou criar o meu arquivo da minha my grancho e tem um padrão para a gente criar esse arquivo para o Flyer conseguir fazer o controle
identificar que esses arquivos aqui são de my grancho como é que é o padrão eu boto VV diversão Então qual é a versão fica aqui no caso é a V1 então é a primeira my greath a gente tá criando é av1 eu vou criar uma outra myration é av2 vou criar a terceira por aí vai ver e a versão underline underline e aí o método e a tabela que que é o método aqui eu vou fazer um Create Então esse é o método que eu tô fazendo tô fazendo crave se eu tivesse fazendo um update
é padrão de colocar aqui update se eu tiver fazendo um drop bota o drop então aqui é av1 primeira versão do meu banco de dados primeira versão onde eu estou criando a tabela e aqui eu vou botar ponto SQL Ele pergunta se eu quero adicionar o arquivo aqui o Git eu botei que sim mas como eu disse para você isso aqui não importa muito agora e agora aqui dentro desse meu arquivo ciclo eu vou escrever um comando SQL então aqui eu vou colocar Create table produt abre Chaves não é abre parênteses ai nunca me lembro
se é Chaves ou parentes vou pedir ajuda aos universitários aqui eu sempre me esqueço dessas coisas é parentes tá Abrir parênteses então Crate table para eu criar a tabela produto essa minha tabela produto vai ter algumas colunas A primeira coluna Eu já copiei ali para a gente não precisar ficar escrevendo a primeira coluna vai ser o ID então cada produto eu vou identificar com a de único Esse é dia vai ser do tipo text vai ser a primer aqui da minha tabela tem que ser único então não posso ser aí de repetidos e não pode
ser nu o meu produto também vai ter um nem um name vai ser do tipo text o text não pode ser num esse título não pode ser não e apenas isso o meu produto também vai ter um Price in senses preço em centavos esse aqui vai ser um Number e não pode ser nu também E o que mais o nome um pricenses e só vamos botar só isso não vamos não vamos dificultar muito aqui pronto e essa aqui é o arquivo da minha my Grace então assim que eu usei executar minha aplicação Java agora o
flyway vai detectar Opa tem um novo arquivo lá dentro da pasta bb.margration que é um novo arquivo lá dentro aí ele vai ver aí esse arquivo aqui é o v1 Crate tema Brother vou executar ele aí ele executa o que que isso aqui faz vai basicamente criar a tabela lá dentro do nosso banco de dados que a gente acabou de criar Deixa eu só me lembrar se eu boto ponto e vírgula lá no final bota gente eu sempre esqueço assim táxi do SQL eu sempre escrevo errado e depois cria a tabela tudo errada ali dá
erro então eu só tô consultando aqui para a gente não não colocar os comandos do SQL errado então criei a tabela produts e agora ó eu vou ver lá no meu post- Chico vou dar um Reload aqui na minha tabela brother e vocês vão ver ó no meu banco de dados product e vocês vão ver que aqui dentro do meu banco de dados product não tem nenhuma tabela não tem nenhuma tabela aqui nada agora quando a gente executar Nossa aplicação ele vai criar uma nova tabela aqui dentro vocês vão ver eu só vou vir aqui
e executar minha aplicação e a gente vai ver que vai surgir uma nova tabela ali dentro esperar que ele terminar de executar deu erro vamos ver o que que foi ah número não existe é float gente Ops é não é int na real que eu quero criar mas pode ser um flut também mas acho quente existe ele deu erro de sintaxe de SQL tá ele foi executar aqui e deu erro como eu falei para vocês eu sempre esqueço assim táxi do SQL vou executar aqui eu acho que a gente acho que agora vai dar certo
se não a gente troca para float Pronto acho que agora não deu nenhum erro ele executou a minha aplicação sem problemas então vocês podem ver que quando ele iniciou minha aplicação ele Já identificou que meu arquivo de my grancho já tentou rodar já viu que tinha um erro e nem iniciar minha aplicação então isso tudo de forma automática agora vou voltar aqui no meu postic vou dar um Reload aqui ó bum surgiu duas tabelas novas uma tabela produtc que a gente não criou essa tabela aqui ó flyway esquema History que que é isso aqui bom
isso aqui é a forma do Flyer e saber se ele já rodou essa my greath ou não Então imagina se ele não tivesse esse controle toda vez que eu executasse a minha aplicação ele ia tentar criar essa tabela de novo e a dar um erro pô não pode né então ele tem que ter um controle disso como é que ele faz esse controle através dessa tabelinha aqui então o próprio Flyer já cria essa tabelinha e bota e bota aqui quais ele já executou então beleza A gente já tem a nossa tabela criada agora a gente
pode passar consultar essa tabela e como é que a gente vai fazer isso bom a gente vai ter que criar uma entidade dentro da nossa aplicação e um repouso o que que são essa entidade esse repouso eu trouxe aqui no nosso notion para nós também então as entidades nesse caso vão ser uma entidade JPA elas são classes que representam um objeto do domínio da nossa aplicação e são mapeadas para tabelas em um banco de dados relacional então a entidade imagina como se fosse a representação em forma de objeto de um objeto dentro de um dado
dentro da minha tabela então a entidade representa diretamente uma tabela então se eu tenho a tabela users dentro do meu banco de dados eu vou ter entidade user e essa entidade esse objeto aqui vai ter atributos por exemplo id e name que são correspondente as colunas lá no meu banco de dados isso aqui é para quando a gente tá falando de banco de dados relacionados aqui no spring A Entidade Vai representar Nossa tabela a gente pode criar uma nova pasta aqui então aqui dentro do meu dentro da minha do meu pacote da minha aplicação aqui
no bom ponto exemplo eu vou vir aqui criar um novo Pet esse meu Packet vai te chamar Dom domênia existe Opa tô na aplicação errada aqui eu vou vir aqui eu vou criar um novo pack que vai te chamar também eu vou até fechar esse meu Vou deixar aberto ali caso a gente precisa mas aquilo ali era o aplicação que eu tava construindo Antes aqui dentro do meu domen eu vou criar uma nova classe Então por que domen o domínio da minha aplicação do mês são as entidades são as entidades das regras de negócio que
representa a minha aplicação então isso vem bastante da arquitetura limpa eu até deixei o link aqui na descrição do vídeo do livro arquitetura limpa então para quem quiser dar uma Líder uma lida muito enriquecedora eu ainda não terminei de ler Comecei a ler e não terminei e agora depois que eu terminar o livro que eu tô lendo tô no final eu vou voltar a ler arquitetura limpa porque é uma leitura muito enriquecedora mas aí eu já tá nos meus planos para fazer uma live sobre arquitetura limpa sobre DDD sobre tdd também aqui então eu não
vou me aprofundar muito mas saibam que normalmente a gente cria as nossas entidades dentro da pasta do Amém que seria o domínio da nossa aplicação domínio são as coisas que fazem são os objetos que fazem parte das nossas regras de negócio então por exemplo eu tenho uma regra de negócio usuário deve poder buscar por um produto usuário é uma entidade produto também é uma entidade dentro da minha aplicação e é esses dois ficariam dentro da classe de domínio bom aqui dentro da pasta do Man eu vou criar um novo Pet esse meu pack te vai
se chamar product então aqui vai ser para representar a entidade produto né na aplicação e dentro dessa pasta produt eu vou criar um New javaclass que vai te chamar brother bem original e para a gente indicar para o Spring novamente que essa classe aqui representa que ela é uma entidade ela representa uma tabela lá no nosso banco de dados a gente vai ter que usar anotações então aqui eu vou ter que colocar e esse table vocês vão ver que vem dentro do já carta persistência que é do a biblioteca para persistência de dados e aqui
o meu table eu vou colocar se eu não me engano deixa só me lembrar como é que faz eu tenho que colocar o name ai meu Deus sempre algo errado tem que colocar name igual e aqui é o nome da nossa tabela a minha tabela chama protheus e eu vou ter que colocar aqui também entity entidade eu vou dar um nome para essa entidade também vou chamar de product outra coisa que a gente vai ter que colocar aqui é gente eu sempre esqueço o nome das anotações por isso que eu trouxe tudo no outro link
para nós é icos anotação aqui é para a gente indicar para o Spring Qual é o tipo do meu da minha primer aqui dessa tabela primer aqui é a coluna que identifica unicamente cada um dos itens da minha tabela lembra que a gente criou lá no nosso SQL aqui a primer aqui como sendo o ID aqui a gente precisa indicar também a nossa Premiere aqui e a gente indica essa primer aqui dizendo assim ó Então esse é o Wilson é do tipo agora eu vou colocar outras anotações aqui na nossa classe depois essas anotações vão
ser do lombok uma biblioteca do Java para gerar códigos então para não precisar ficar criando todos os gathers e seters da minha entidade para não precisar ficar criando constructors para ter todos os argumentos para não ter todos os argumentos a gente pode usar as anotações do lombok todos esses códigos para nós em tempo de execução Então olha eu até tinha entrado um exemplo aqui deixa eu copiar para mostrar aqui para vocês agora a gente cria as anotações do loboque mas aqui dentro da nossa classe product a gente vai criar os atributos que representam as colunas
lá da nossa tabela no banco de dados então aqui ó eu criei um novo atributo que é privado e aquele é um long eu vou trocar de long para string porque esse nosso aí de quando a gente criou lá a gente criou como um text então que eu vou trocar o tipo dele para stream esse meu atributo da minha classe é de só que eu tenho indicar de novo para o Spring que esse aqui vai de lá da minha tabela Então usa anotação aí de e eu preciso usar também essa anotação gênero para dizer que
esse valor aqui esse é dia é gerado automaticamente ele não é um valor que o usuário vai me passar e quando eu for distanciar A Entidade criar uma nova identidade eu vou passar esse valor por parâmetro para o Construtor por exemplo não esse valor aqui exagerado automaticamente eu quero que toda vez que eu for criar um novo dado ele já cria esse ID para mim e aqui eu defino um Generation Type como é qual é o método né Qual é a forma que ele vai usar para gerar esses aí diz aqui bom eu quero que
ele use a forma de o ID então toda vez que ele for criar uma nova Uma Nova Instância da minha entidade ou seja um novo dado lá dentro da minha tabela ele já vai gerar um ID aleatório para representar o ID desse meu dado aqui é que falta importar o essa anotação ela vem dentro do unboxing pronto e agora que a gente vai definir as outras atributos da nossa classe aqui eu vi que o Luiz falou o preço não pode ser um índice o preço aqui eu coloquei um índice porque ele é um preço pricenses
então é o preço em centavos não vai ter vírgula aqui não vai ter ponto entendeu então caso o valor do meu produto seja quatro reais eu vou colocar aqui 400 entendeu Por isso que eu estava em centavos eu nunca gosto de salvar como float os preços eu gosto de salvar assim e aí o front fica responsável por formatar então o Fronte recebe esse valor Fronte já sabe que tá em centavos por exemplo daí ele divide por 100 e pega o float e mas no meu banco de dados eu salvo sempre como um índice é por
isso que eu coloquei como um link aqui só para explicar para vocês e o Moisés perguntou lomboque você pretende usar sim eu vou usar Long Box aqui a gente já tá usando na verdade já usei aqui uma anotação mas a gente vai usar outras aqui então o próximo a próxima atributo que a gente vai criar aqui na nossa classe vai ser o nome então aqui eu vou colocar um string name e aqui a gente também vai criar um number que vai ser o price insetos pronto e agora a gente vai criar as anotações aqui para
nossa classe Então vou colocar aqui os gathers então isso aqui eu tô falando para o que que eu tô por que que eu tô botando isso aqui em cima porque em vez de eu fazer assim ó em vez de eu vir aqui e criar um método um método público para essa minha entidade e colocar aqui que retorna um número e ele é o get Price incents para não precisar ficar criando isso aqui para cada um dos meus atributos Eu uso as anotações do lomboque ele vai gerar esses métodos aqui para mim de forma automática em
execução em runtime então para a gente não precisar ficar criando por exemplo cada um dos métodos para cada um dos atributos que eu tenho aqui da minha classe A gente usa as anotações no Block que elas são para geração de código então aqui eu vou botar gather Setter e aqui eu vou colocar também ou Artes Construtora então ele vai criar um Construtor para mim também que recebe todos os parâmetros e seta todos os parâmetros e eu vou criar também um no Arcos então Construtor que não recebe nenhum parâmetro e não seta nada então ao Arcos
seria isso aqui ó brother esse meu Public Public produtic receberia um Strings string name recebi um Number Price 600 recebe todos os todos os atributos por argumento e seta todos eles na no objeto Então por enquanto Essa é a configuração da nossa entidade então agora a gente já tem uma entidade que representa a nossa tabela no banco de dados mas não é só isso essa aqui é a representação da nossa tabela mas a gente precisa manipular essa tabela e para manipular a tabela a gente utiliza repositores os repos para quem já tá familiarizado com bacchind
já deve ter escutado várias vezes mas eu trouxe uma explicação rapidinha aqui então com Spring a gente pode criar repositórios que são classes de aves que a gente usa para fazer consultas e serções na nossas tabelas do banco de dados Então em vez ficar rodando comandos SQL ali no Meio do meu código eu vou usar uma classe eu vou usar classe e acessar métodos fica bem mais limpo o meu código bem mais separadinho e modularizado então o padrão de reposition Ele separa a lógica de negócios da lógica de acesso de dados então ali a nossa
lógica de negócios ela só vai conhecer a interface do repositor e só vai se comunicar com essa interface Então ela só vai chamar métodos eu não vou saber nada de qual é o banco de dados que eu tô usando lá por trás eu não vou saber nada de SQL vou saber nada ali dentro do meu controle por exemplo só sei que eu uso uma classe e uso método dessas Classe A única coisa que eu conheço é a interface do repositor essa é uma forma da gente desacopular nossa aplicação e modularizar ela e isso vem também
do arquitetura limpa então novamente eu deixei o link aqui do livro na descrição porque eu sabia que eu ia falar bastante sobre ele então se vocês quiserem comprar Eu recomendo bastante é uma leitura que vale muito a pena principalmente para quem vai trabalhar como back né eu já trabalho que é aperfeiçoar mais ainda os seus conhecimentos Então os repositores eles são uma camada intermediária entre o banco de dados e a minha regra de negócios e eles disponibilizam métodos para a gente fazer a leitura gravação atualização exclusão de dados e aqui no JPA não joga Spring
é tipo mágico a gente criar um reposito então eu vou vir aqui no nosso doming product e vou criar uma nova classe essa classe eu vou chamar de pronto add e aqui dentro Eu copiei ali a nossa eu copiei o que tava ali no nosso notion para já ir mostrando aqui para vocês aqui eu vou colocar como products e como eu falei para vocês isso aqui é só uma interface Então o meu controle lá eles comunica como interface e essa interface aqui estende a interface do JPA repositri essa interface aqui do JPA repositri faz toda
mágica Então ela cria todos os métodos em Run time para nós então para quem não conhece interface é como se fosse uma classe só que sem implementação interface é um contrato é uma forma da gente criar um contrato e só fazer as declarações mas sem implementação de método nenhum Só que essa interface aqui do JPA É Mágica porque ela é uma interface mas que ela acaba criando os métodos em uma Tab acaba fazendo a implementação e como é que ela cria esses métodos bom ela precisa receber A Entidade o qual ela vai estar manipulando nesse
caso aqui a entidade produt Então tem que importar aqui pronto e aqui eu tenho que passar para ela também Qual é o tipo do da primer aqui dessa entidade que no caso esse tipo é uma string E aí Isso aqui é só isso que eu tenho que fazer para criar meu repositório é bem simples e aí com isso daqui o quando eu usava o repositório ele já vai ter todos os métodos implementados os métodos de folk ele trazem get ratforms caso a gente queira criar métodos com Cris mais avançadas no nosso no nosso repositório a
gente pode vir aqui e editar adicionar mais um método aqui né tipo criar um novo método aqui dentro do meu repositório e utilizar ele depois agora por enquanto a gente só vai utilizar os métodos que já vem padrão os métodos de fogo então agora só deixa eu ver aqui os comentários que eu tô vendo que vocês estão falando bastante aqui Fernanda você pretende fazer algum conteúdo de spring Security sim inclusive vou mostrar aqui para vocês esse outro projeto que eu tava falando aqui para vocês que eu tava fazendo é do vídeo de spring Security então
eu estava gravando antes eu estava na verdade organizando o projeto para começar a gravar Então Aqui ó Vai ter todo implementação de jwt de login de usuário controle de token etc vou trazer esse vídeo sim aqui para o canal eu já tô preparando inclusive Então esse aqui que tá aberto é do nosso próximo vídeo por isso que ele tava aqui era o que eu tava fazendo antes Inclusive eu vou usar até aqui para consultar Olha vou mostrar aqui para vocês por exemplo esse meu repositor aqui dos usuários Eu estendi ele Ó eu criei aqui um
novo método e esse método aqui como vocês podem ver ele tipo eu coloquei Fight vai login e não coloquei nada dentro dele porque o JPA é tão inteligente que se a gente seguir um padrão do JPA ele já consegue construir para então quando eu coloquei aqui um método com nome Fly de by login Ele já sabe que ele tem que fazer um select ou frontle tal were login igual a x que é esse variável aqui que eu tô passando por parâmetro eu não precisei fazer implementação de método nenhuma eu só usando aqui o padrão para
escrever o nome do método o JPA já vai ser inteligente o suficiente para imprime criar essa curva para mim e eu poder utilizar esse repositório fazer essas curvas então o JPA dá bastante poderes para nós é bem legal usar ele porque é bem fácil mesmo é facilita bastante a nossa vida então agora a gente vai pegar esse produtor repository lá no nosso controle Então vou vir aqui controllers e vou ter que usar ele aqui para fazer a consulta né nesse Point aqui de get para fazer a consulta no nosso banco de dados Então eu preciso
uma Instância do meu repositor aqui como eu falei para vocês em nenhum momento eu tô declarando a Estância do meu Rash Controller para conseguir injetar uma dependência nela Então aqui quem vai injetar dependência para mim vai ser o Spring E para isso eu vou ter que usar o anotação aqui de Alto White essa anotação fala por Spring ó essa dependência aqui que eu tô dizendo dessa classe é tu que tem que inventar para mim cria uma Instância e injeta aqui dentro para mim que eu vou ter que utilizar então aqui vai ser uma Instância privada
vai ser um atributo privado do tipo Então tem que indicar que para ele Qual é né o repositório que eu quero que eu quero que ele me injete aqui e eu vou dar um nome só de reposito e agora aqui no nosso método get finalmente a gente vai fazer assim ó a gente vai vir aqui vai colocar vamos consultar o nosso banco de dados Então vou ver aqui vou colocar var ao products eu vou fazer repository ponto find ou então aqui ele vai pegar todos os dados que tem lá dentro da minha tabela no nosso
caso a gente ainda não inseriu lá nada na nossa tabela Então não vai retornar nada e eu vou retornar aqui no nosso Body Vou retornar o All products e pronto vou atualizar aqui no nosso servidor vou clicar aqui no novo só para ter certeza que atualizou e agora a gente vai poder entrar lá no nosso insônia e vê se toda essa configuração que a gente fez do repositor e da entidade da my greath etc se tá tudo funcionando então eu vou entrar aqui no insônia eu vou disparar de novo a requisição lembra e estava retornando
deu OK agora eu quero que ele me retorne uma Rei vazio porque não tem nada lá dentro da minha tabela rodei uma Rei vazio ele fez a consulta não tinha nada dentro da minha tabela ele me retornou a rivazil Então vou vir aqui no post Chico vou vir aqui em proa que vou adicionar um produto só por não não vou adicionar Vamos criar o mesmo do post já que o objetivo da Live é fazer o crude já vamos criar um método post para adicionar dados aqui dentro então a gente vai ver o resultado das coisas
funcionando então agora para a gente declarar o método post a gente usa uma anotação também foi chamar de post map vai ser uma classe pública ela vai retornar um responde vai ser Crate post brother pronto essa minha esse meu post ele vai receber dados por parâmetro né então quando eu for chamar esse método aqui eu vou enviar o nome e o valor do produto que eu quero publicar Então a gente tem que indicar para o Spring que eu quero pegar os dados que vieram lá no body da requisição E para isso a gente vai usar
a notação request Body e eu vou colocar aqui também anotação do valet que é a notação para validar se o corpo da do post veio correto e como é que ele vai fazer essa validação através da classe que eu vou dizer aqui agora para ele que é o formato desses dados então aqui a gente vai criar uma nova classe que vai se chamar essa classe aqui ainda não existe então vou vir aqui de novo dentro do meu domen vou criar um novo javaclass e vou colocar aqui request produtt só que isso aqui não vai ser
uma classe vai ser só um Record vou adicionar aqui de novo e esse meu recorde o que que vai ter dentro desse meu react esse meu react de uma forma de criar uma classe que só tem atributos não tem nada dentro dela não quero implementar nada só uma forma de criar um ditiou rapidinho aqui então a gente ou para quem não sabe é daira transfer option então o objeto que eu sou que eu tô usando só para transferir dado o que que seria transferir ou receber a informação do meu cliente aí assim que eu recebo
Eu já faço uma manipulação e faça o que eu preciso ou para enviar para o meu cliente final então para eu não enviar minha entidade inteira eu crio um dele é transformar eu só para fazer um envio final que seria o objeto que eu vou enviar finalmente para o cliente então aqui esse meu requestrada vai ter uma string que é um name e ele vai ter também um Number que vai ser o price nses aqui eu vou salvar e agora a gente vai importar esse request produtics aqui eu poderia ter dado o nome até de
request projectio mas aqui vai por botar o sufixo de ti ou no final né mas aí fica a escolha de vocês aí aqui agora eu vou fazer um System Ponto Alto ponto print LM deira só para a gente ver se o nosso dira vai estar chegando aqui certinho no nosso post e por fim eu vou fazer aqui por enquanto um retorne responde ponto ok Ponto build então quando eu não boto nada dentro do corpo do meu status 200 eu tenho que colocar esse vídeo no final caso eu coloque alguma informação dentro do meu Ok então
por exemplo você bota aqui deu Ok eu não preciso botar o Beauty mas quando eu crio aqui um responsientes de vazio sem nada no Body eu preciso colocar esse ponto Build eu vou colocar aqui um sistema um toque pronto só para a gente ver o log dos dados né aí lembra que eu falei para vocês Que esse velho de aqui vai fazer a validação da requisição vai fazer a validação do Body que chegou a ver a requisição como é que se ele faz essa validação ele usa esse meu requestrada isso aqui então ele vê Ah
tem que ver um meme que é uma string tem que vir um pricenses que é um Number pronto só essa validação que ele vai fazer se viesse esse parâmetros estiverem com os tipos corretos ele continua se tiver com tipo errado ou se não tiver vindo um parâmetro quero obrigatório aí ele vai lançar uma exceção e a gente teria que tratar essa exceção depois então aqui eu acho que ele Já reiniciou minha aplicação vamos testar Então vou ver aqui vou criar um novo método aqui dentro do meu sombra o método do tipo post aqui eu vou
colocar contra o espaço base URL vou colocar a barra product e aqui eu vou lançar um corpo em formato Jason esse meu corpo vai ter o name vê se chamar camiseta e vai ter o price e aqui eu vou colocar o price 600 como sendo 2000 que seria tipo r$ 20 vou disparar ele deu um 405 metro de nota Lounge porque vamos ver eu fiz um post no Barra brother provavelmente ele não atualizou lá no meu inteligente então vou dar aqui um Reload de novo vamos ver se ele vai atualizar eu cliquei aqui no botãozinho
Verdinho de Reload porque provavelmente ele ainda não tinha mapeado aqui que eu criei um novo um novo método vamos esperar ele inicializar pronto vou voltar aqui no insônia vou esperar a requisição de novo aqui no post e agora sim ele retornou 200 Ok mas lá a gente não fez inserção nenhuma né vamos ver se os dados chegaram lá de forma correta ó a gente já consegue ver aqui que chegou um request Project com name camiseta e o pricenses perfeito é isso aí que eu vou utilizar agora para inserir o dado no meu banco de dados
então com isso aqui eu vou ter que fazer um repositre. save então para salvar esse dado só que eu não posso passar esse dinheiro aqui direto por que que eu não posso passar porque o meu repositor aqui ele espera uma entidade do tipo Project lembra ele manipula a entidade product que é a tabela pro e essa entidade foi essa classe aqui que a gente criou então para eu salvar um dado lá no banco de dados quando eu consulto esses dados a gente tem que manipular essa entidade aqui então eu vou ter que vir e criar
uma Instância dessa entidade Então vou vir aqui vou criar uma uma variável do tipo brother vai ser meu brother E aqui vou dar um mil para criar uma nova Instância da classe pronto e aqui vocês vão ver que ele vai dar um erro quando eu passar o dele porque porque lá no construtor da minha classe no construtor da minha classe aqui na minha classe product eu não tenho nenhum Construtor que aceite um objeto do tipo request que foi esse objeto que a gente criou né não tem nenhum método aqui que indica para essa classe que
ela pode receber isso via Construtor Então ela tá me indicando o erro então mesmo que aqui com o unboxing eu tenha pedido para ele gerar um Awards aqui ele tá pegando argumento para argumento ele não tá recebendo um argumento do tipo request Brothers mapeando para cada um desses atributos então isso aqui a gente vai ter que fazer de forma manual Então vou colocar aqui Public product para declarar o Construtor da minha classe para quem não sabe o que que é construtor da classe Construtora da classe é uma forma de quando a gente Estancia a nossa
Classe A gente passar parâmetros de fogo para ela para ela salvar nos atributos dela né nos atributos da classe então isso seria o Construtor da minha classe quando chama funções a gente passa parâmetros quando a gente cria uma Nova Instância da Classe A gente passa parâmetros também para o Construtor dela para que ela se construa com aqueles dados de fogo basicamente isso então aqui eu vou criar Public Project que essa é a forma aqui no Java deu criar um Construtor e esse meu Construtor pode receber um parâmetro do tipo requestrada que vai ser do tipo
request Project e aqui eu vou fazer assim ó desconto name recebe aqui desconto pricenses pronto aí vocês podem ver aqui que eu não define qual era o ID ó que eu não disse parar de bom esse é dia aqui vai ser gerado de forma automática que eu coloquei aqui ó que ele é um generated vela então toda vez que eu faço esse New aqui distanciam a classe Ele criou para mim criou de forma automática então aqui em vez de fazer repositor ponto savideira eu vou fazer reproduzir e agora sim então deixa eu só conferir se
tá tudo certinho ali no nosso Opa Deixa eu voltar aqui na nossa entidade então aqui tá certo beleza agora Ele deve funcionar então voltando lá para o nosso postico aqui na nossa tabela produtos ela não tem nada dentro então vou lá e vou disparar essa nova requisição e a gente vai ver se vai funcionar primeiro eu vou dar um Reload porque parece que não tá atualizando automático Então vou dar um roloud só para a gente ter certeza que quando eu disparar a requisição ele vai ter pegado essas atualizações que a gente fez [Música] tá iniciando
aqui vamos esperar Pronto já iniciou vou entrar aqui no insônia vou te esperar deu um erro vamos ver ele falou não pode executar o SQL porque teve um erro o tipo taipe interages ah tá aquele tá num erro porque eu tentei eu passei aqui o 200 e lá ele não tá conseguindo traduzir esse 200 para o tipo Number lá que eu declarei então eu tô fazendo aquele velad e ele não tá conseguindo fazer aquele vela de lá que eu criei então que vela é esse aqui ó Eu sempre tenho um problema com os tipos também
você é super normal tipo super normal eu digo a gente ter problemas com algumas coisas e Meus problemas são os tipos então por exemplo quando que eu coloquei velad eu falei que esse aqui tem que ser do tipo Number Então deixa só dar uma coladinha aqui normalmente como é que eu faço deixa eu ver aqui estão todos os meus projetos das dos tutoriais que eu crio eu deixo tudo aqui dentro dessa pasta que eu tô aberta aqui agora então vou abrir uma nova janela só para consultar uma coisa aqui rapidão [Música] não é um tipo
interior que a gente tem que colocar lá bolsa deixa eu fechar isso aqui que a gente não vai precisar mais deixa eu abrir aqui o nosso projeto aqui não é o tipo Number aqui é um tipo interjei que eu tenho que passar não é Number tá aí ele vai dar o certo porque ele recebeu do Bore ali o Jason e aí o Jason é um tipo Inter já que não é um Number Agora sim vai dar certo dá um Reload vamos esperar inicializar de novo enquanto isso eu vou vou dar uma lida aqui nos comentários
que faz um tempinho que eu não olho o Ah eu vi aqui que vocês estavam falando de it ou legal o Reinaldo mandou oi feia excelente explicação Valeu Que bom que você está gostando perguntou assim quanto tempo você levou para conseguir ter conhecimento no back ange Spring no GS e qual você gosta mais de trabalhar Demorou gente para eu conseguir mexer assim no Bay Candy tipo eu comecei com Fronte fiquei sei lá um ano e pouco só estudando Fronte aí depois eu fui para o beck comecei a me aventurar no backing tipo eu já tinha
me aventurado antes para os projetos da faculdade mas nada além do básico aí depois eu vi tipo assim pô quero aprender mais coisa além do front aí eu comecei a estudar Back e agora que estou eu então tipo mais ou menos um ano e meio de estudo de backnde estudando nude e Spring aí qual você mais gosta de trabalhar hoje eu gosto mais do Spring eu vou contar para vocês eu gosto mais de trabalhar com Java porque eu tô aprendendo bastante coisa do Java também o nojo Eu já trabalhei na outra empresa que eu trabalhava
usava note e agora eu tô lá no Itaú a gente tem usado Java para algumas coisas então eu tô tendo que aprender umas coisas novas dos jovens também desafiante também legal para mim e eu gosto de trabalhar eu gosto da anotação aqui de orientação objeto etc é bem legal que mais vamos ter aqui se tem alguma dúvida Se você fosse começar hoje começaria confronte ainda eu começaria com o Java eu vou explicar para vocês por que que eu comecei com Fronte eu comecei com Fronte por Demanda então tipo assim não fui eu escolhi o front
e comecei a tipo assim aqui o front vou começar tipo surgiu eu entrei no projeto da faculdade tá logo no primeiro semestre e eles precisavam criar uma interface etc e eu vi que para criar interface a gente precisava de html CSS script eu comecei a estudar isso entendeu foi mais por surgiu a oportunidade eu agarrei então não sei se hoje talvez eu começaria pelo front porque tipo assim o Java pode te dar grandes oportunidades também porque eu vejo pouca gente começando pelo Java né pouca gente estuda já vai atrás de Java Spring não tô dizendo
que tipo não existem existe mas é muito menor comparado a quantidade de gente que tá começando com Fronte por exemplo e o Java tem ótimas oportunidades tem tem bom salários também Empresas Grandes utilizam então já é uma boa opção também essa Live vai ficar salvo assim vai ficar salva ela sempre ficam salvas aqui no canal para vocês conseguirem assistir depois reproduzir etc eu o DJ Itália falou assim a minha questão do getset que você usou fica bem menos roboso sim o bomboque é muito bom Principalmente quando a nossa aplicação tá maior então por exemplo lá
no meu trabalho a gente tem aplicações enormes né que tem muitos métodos Services é muito sérios controllers etc e aí esse essas classes são grandes também tem muitos atributos E se a gente fosse ficar declarando os gates etcs dessas classes todos os construtores delas ia ficar umas clássico uns arquivos de 300 400 500 linhas né então não dá então não bota ajuda muito a reduzir esse boiler play que fazer essas criações automáticas para nós que é uma coisa mas manual né Não teria porque a gente declarar esses métodos bom vamos continuar aqui a nossa a
nossa aplicação então um comentário aqui para vocês vocês viram que eu criei aqui esse Construtor produzem que ele recebe um requestrada mas aqui o meu a minha só um minutinho Meu gatinho aqui tá pedindo para sair eu vou abrir aqui a porta para ele voltei a minha gatinha estava pedindo para ele para sala bom E aqui quando a gente declarou as anotações do loboc a gente colocou aqui para ele criar o Construtor para nós também aí vocês podem estar se perguntando pô mas eu posso ter um método com o mesmo nome dentro da mesma classe
sim gente eu posso se esses métodos tiverem assinaturas diferentes eles podem ter o mesmo nome então aqui eu posso criar um outro método que vai receber por parâmetro uma string e um enter aqui por exemplo E aí eu posso ter esse método aqui eu posso ter métodos tipo o mesmo nome mas com assinatura diferente o que que é assinatura diferente ele recebe parâmetros diferentes porque porque eles vão a partir de uma mesmo a partir do momento que eles recebem em parâmetros diferentes provavelmente eles vão fazer processamento diferentes então é super comum a gente ter mais
de um Construtor um Construtor recebe um de ti ou o outro Construtor recebe todos os argumentos outro Construtor não recebe argumento nenhum para a gente deixar a nossa classe mais versátil também então só quis fazer essa explicação aqui para vocês bom já troquei aqui o tipo do meu do meu do meu refresh products aqui porque o meu pricenses estava como Number eu troquei para um Winter que esse é o tipo correto dele e vocês viram que quando ele veio com o tipo errado o Spring aqui né o validation do Bim me Estourou um erro lançou
uma exceção porque ele tentou fazer a validação lá como eu comentei com vocês e deu erro não tava contigo porque ele tava esperando e ele lançou um erro e tá certo como a gente não tratou essa exceção e lançou um erro genérico ali de Run time uma exceção genérica de time Então acho que aquele já atualizou vou mandar aqui de novo a requisição acho que ele não atualizou vou dar um Reload aqui só para ter certeza porque a gente fez aquela atualização ali do enter polimorfismo requisito mínimo é ensinado em pó sim exatamente a poli
morfismo é tipo uma coisa pode ter várias formas então é poli morfo então uma classe tem várias formas é mais ou menos isso por isso o nome polimorfismo vou mandar aqui aquisição continua disparando erro deixa eu ver aqui o que aconteceu tem alguma coisa que eu tô configurando errado vamos ver então [Música] deixa eu ver aqui uma coisa não tá certo sempre aqui nas lives acontece erro ao vivo e eu gosto disso porque a gente de buga juntos então o que que basicamente que ele tá dando ele tá dando um erro de tipo eu tô
mandando um tipo e tô esperando o outro lá na minha classe só não tô entendendo exatamente qual é o tipo qual é o erro aqui que tá dando o produtor está Number na entidade verdade Bem lembrado acho que eu não alterei isso Ah boa isso mesmo acho que é isso bem pensado deixa eu dar um Reload aqui então a gente teve que alterar lá no nosso request e aqui na nossa entidade também acho que é exatamente isso acho que era isso que tava faltando Vamos dar um Hello e acho que agora vai funcionar pronto o
Adroaldo botou aqui ó essas anotações aqui que o Adroaldo botou são notações que a gente pode botar lá no nosso request Então posso vir aqui ó e colocar anotações em cima desses parâmetros aqui para ele fazer a validação para nós então aqui ó não quero que isso aqui seja Blank eu não quero que isso aqui seja no entendeu esse aqui no caso só not no e aqui também eu posso botar note Blank que aí o Bim vai fazer a validação para mim então aqui eu posso botar note Blank por exemplo mas aqui não eu vou
tirar por enquanto que a gente não tinha usado antes mas é legal você saberem isso também tudo que a gente faz aqui no Java Spring basicamente com anotações Então vou colocando essas anotações vou adicionando mais configurações mas validações da minhas no nosso sono e vamos disparar novamente agora sim deu 200 Ok vocês estavam certos tinha faltado lá na entidade e agora eu vou entrar aqui no meu postiko lembra que não tinha dado nenhum aqui dentro vou dar um Reload pum apareceu o dado que a gente acabou de postar perfeito Era exatamente isso que a gente
queria então agora vamos criar os nossos métodos de excluir e de atualizar um dado só que aqui eu vou adicionar as notações como vocês tinham mencionado ali no chat porque é bom a gente ter essas validações então por exemplo o meu nome eu quero que ele nunca seja Blank Só que eu não quero que seja Black isso aqui eu não quero que seja nu então eu vou colocar essa anotação aqui para ele fazer essa validação do request Body para nós aqui eu vou fechar a nossa classe e agora lá no nosso Controller a gente vai
declarar um novo método e vai ser o método de Punch map Punch é o método para atualizar um dado então aqui eu vou ter Public responde [Música] esse meu eu posso fazer de duas formas eu posso receber o ID do produto que eu quero atualizar no corpo e aí e os dados também no corpo ou eu posso receber o ID lá no meu na minha URL e aqui no corpo só os dados que eu quero atualizar eu posso fazer essas duas formas mas aqui eu vou vou receber tudo no corpo e aí lá no de
Elite a gente recebe o ID pelo PF para aí vocês verem como é que faz essa configuração então aqui a gente vai criar de novo um repertório e aqui eu vou colocar e por ser preguiçosa eu vou usar o mesmo aqui e vou usar o mesmo nesse caso então aqui quando alguém quiser atualizar o valor do meu produto ele vai ter que mandar de novo o name e o price porque aqui eu coloquei que não pode ser Blank que não pode ser Blank não pode ser nu eu poderia criar um novo request produtic por exemplo
para representar os dados que vão vir no corpo quando foram um Punch ou eu poderia tirar as validações ali daquela classe permitir que viesse no Luan underfinner por exemplo mas aqui não é o caso a gente vai pedir que sempre quando alguém for atualizar um produto ele Mande de novo novamente o name e o price então aqui eu vou criar um eu vou fazer assim ó só então que eu tô criando uma nova variável e aqui eu vou fazer repositrens ah não vou ter que criar um novo de novo sabe porque porque aqui eu vou
precisar do id nesse corpo aqui eu vou precisar que ele me mande então aqui na verdade eu posso criar o ID aqui com a streaming só que esse dia aqui não vai ser obrigatório então a pessoa pode me mandar o ID ou não então não vou botar anotação aqui para verificar a partir do momento que eu não coloco isso aqui pode vir Como pode vir vazio na primeira requisição por exemplo se eu não me engano tá aí aqui a gente vai fazer um aqui eu tenho que dar um nome de e aqui eu vou fazer
um deira ponto aí então eu vou buscar uma nova eu vou buscar referência lá no meu boot dados pelo id e aí o repositor vai fazer essa busca para mim e vai me retornar nessa variável e eu vou salvar nessa variável E aí agora eu vou eu tô vendo que que a galera tá comentando aqui o tratamento do insert Não está errado status Coach não deveria serão 2001 ao invés de 200 sim tem que ser um 201 a gente já pode configurar isso também eu tinha me esquecido ali que a gente tinha colocado como 200
mas a gente troca para um 201 não tem problema que mais aqui a galera tá falando Spring é parecido com next next do longe é parecido é parecido até acho que é isso que tinha gente comentário ver que a galera tava falando manda em mim viram lá treta que rolou hoje do Mundo Eu Tava acompanhando lá não sei se vocês viram bom aí aqui busquei minha referência pro edi agora essa mesma referência lembra que a gente configurou lá os gathers eu vou fazer o 7 aqui então vou botar um 7 name para ponto nenhum e
aqui eu vou botar um Project pricenses pronto e dessa forma eu atualizei os valores lá no meu banco de dados porque lembra que aqui quando a gente está tratando de repositros e entidades o meu objeto aqui representa uma linha lá na minha tabela no banco de dados esse objeto aqui realmente representa o dado lá no banco de dados então quando eu atualizo os valores aqui do meu objeto ele reflete já lá no banco de dados também então quando eu atualizo aqui a minha entidade que tá representando um dado lá dentro do meu banco de dados
eu já tô atualizando os valores lá também e aqui é padrão a gente retornar no corpo o valor que a gente acabou de alterar né aqui sempre quando a gente tá falando de uma requisição de que é para atualização de dados é padrão a gente retornar no corpo da nossa requisição o dado que a gente acabou de alterar então aqui eu poderia mandar toda minha entidade produts vou mandar aqui só para a gente ver se deu certo mas não é legal a gente mandar Nossa entidade inteira aqui no corpo Legal seria eu criar um novo
dele a transfer objetivo para representar o meu responde e eu vou fazer isso que aí eu não a gente cria agora é rapidinho então eu vou dar um Reload aqui na nossa aplicação só para ter certeza que vai atualizar pronto tá atualizando e agora a gente vai entrar lá no nosso insônia e vamos verificar se essa nossa requisição aqui de Tá funcionando então eu vou pegar o ID aqui esse mesmo dado que a gente acabou de inserir e eu vou fazer aqui uma requisição aqui eu vou mandar um Jason de chocolate eu vou copiar isso
aqui que eu já tinha feito mas eu vou trocar o nome de camiseta para sei lá cadarço e aqui eu vou trocar o valor para 400 mas vai manter o mesmo não eu não vou mandar um nome para cadarço vou deixar como como camiseta mas como se eu tivesse atualizando o valor da camiseta e aqui eu vou fazer um então vou enviar ele deu 500 Vamos ver que que deu de erro aqui exception essa lógica não deveria estar no service Sim seria bom a gente criar um service para abrigar essa lógica Mas como que a
gente está fazendo um crude do zero mais basicão para passar pelos conceitos de spring eu tô fazendo tudo ali dentro do controle mas o ideal é que a medida que a gente vai crescendo na nossa aplicação no nosso controle a gente Esporte essa lógica ali de fazer a manipulação das nossas entidades do repositor para dentro dos servos por exemplo deixa eu ver o que que deu de erro aqui qual o seu Mac o meu Mac que é um MacBook Air MacBook Air ele tem 16 GB de Ram e 512 GB de SSD e é o
M1 Deixa eu só ver aqui o que que deu de errado chover positivo [Música] mais fácil olhar no stock 3D verdade tava olhando por lá que eu esqueci não será divulgando ao vivo aqui quem sabe fazer ao vivo né Não beleza Acho que alguma coisa de tipo aqui que eu esqueci eu sempre tenho a minha colinha comigo agora para a gente não precisar ficar sofrendo com erros Então deixa eu abrir aqui pera aí eu vou abrir este projeto aqui vamos ver se eu esqueci alguma coisa 12 GB de raio básico para trancar inteligente é às
vezes começa a dar uma travada a galera tá Talvez seja isso deixa eu ver uma coisa aqui não beleza Só não esquece de colocar o Mac no carregador é ele ainda não é não indicou que está com pouca bateria Mas eu daqui a pouco eu já coloco ele no carregador também deixa eu ver a galera falou que o erro tá no ID o Will tá em algum tipo aqui sempre quando eu tô em live eu nunca consigo identificar os erros rápido Eu sempre fico sofrendo aqui ao vivo e vocês me assistindo se alguém souber aí
o que que tá rolando já me diz porque é fácil eu não tô me ligando o que que é Deixa eu só fazer um System ponto alto aqui mas acho que nem ele tá estourando o erro antes mas só para ter certeza não Reload fez estou iniciando com programação você acha interessante para quem tá começando utilizar as ideias apropriadas para cada linguagem sem limitação de config bom assim eu acho acho interessante sim por exemplo está começando com JavaScript é legal tu usar o vscode por exemplo porque facilita bastante tu vai ver vários tutoriais converse code
então é legal usar quanto está falando Java por exemplo vai ver bastante gente usando inteligente usando netbeans etc Então até para ter mais proximidade com os tutoriais que tu tiver vendo com os cursos eu acho bacana usar a ideia mais recomendada mas assim não estressa muito com isso não a medida que tu for aprendendo mais programação estudando mas você vai sentir necessidade de ir para uma ideia que te forneça mais ferramentas também Facilite mais teu dia mas é legal começar assim com as ideias apropriadas Mas não esquenta muito com isso e esse parceiro para o
Haiti em seus trabalhos com a porcentagem de vezes que você ou backing de Jungle nunca usei back end Jung poderia passar o ID por P verbo sim poderia era outra era outra opção que eu tinha pensado no Strike nas referências que está azul e você consegue ver a linha do erro Sim eu sei galera deixa eu abrir aqui o outro eu só quero ver se tá chegando o valor lá é que é muito louco fazer tipo the bug ao vivo e ficar vendo aqui o chat ao vivo também às vezes desconcentra um pouquinho mas eu
acho que o valor nem tá chegando aqui tá na hora de pegar o ID é eu vou fazer por Paty verbo aqui é mais fácil vou tirar o ID daqui de dentro e vou receber o Haiti para esse verbo mas com certeza é um erro muito muito bobinho que eu tô recebendo e eu só não tô percebendo aqui vou continuar um pouquinho mais nas perguntas fe eu tô começando na programação o que tu acha melhor para aprender Python ou Java Depende muito do teu propósito assim pai então é mais usado por exemplo para dayra Science
para machine learning então para fazer ali análise de dados Inteligência Artificial etc já vai mais usado para servidores criar aplicação né backing ou até para jogos por exemplo a primeira versão do Minecraft foi criada com Java então eles têm propósitos diferentes Tá aí uma coisa que eu não achei muito legal esse log de erro do Spring enorme sim eu acho muito enorme o log de erro também tipo gente eu não tenho muito tempo de experiência com Spring é eu tenho pouco tempo das de todas as línguas frameworks assim que eu trabalho Springer que eu tenho
menos tempo então eu tô demorando para me acostumar também com os logs de erro realmente eles são tipo muito maiores do que por exemplo numa aplicação Chaves Spring numa aplicação Java spray JavaScript já é mais intuitivo para aprender sentir mais facilidade por conta das tipagens sim é tipo as tegens ajudam bastante também então vamos receber esse valor aqui para o pf verbo para a gente continuar o que que é perfec verbo é tipo assim ó quando a gente fazer lá nossa requisição em vez da gente fazer a requisição direto para Barra product a gente vai
fazer barra product barra e aí passar o ID ali por parâmetro E aí esse aí dia eu consigo pegar lá da minha requisição da como Pepsi verbo e usar aqui como variável E aí eu anotações aqui no spring para indicar que ele tem que me injetar esse valor que veio lá na requisição ele tem que me injetar aqui nesse método então eu posso vir aqui colocar pef verbo eu vou falar que ele é mais string e vou passar uma Idi E aí eu posso pegar esse valor aqui Opa aí eu posso pegar esse valor aqui
do id por exemplo e usar para fazer a consulta e no de Elite a gente pode fazer a mesma coisa deixa eu ver aqui ó nesse outro projeto que a gente já construiu aqui no YouTube Deixa eu ver aí não tá aberto no outro projeto que a gente já construiu aqui no YouTube que é um vídeo que tem aqui no meu canal a gente que a gente não chegou a criar aquisições né de Punch e de Elite mas eu tinha configurado aqui para a gente fazer isso então aqui por exemplo ela também faz com PF
verbo aqui eu recebo o meu pé verbal o ID E aí aqui no caso declaro e eu uso esse é de para fazer a busca lá no meu banco de dados pegar minha identidade e atualizar esse valor e aqui no caso eu tava fazendo Patch recebendo no Body Então tava recebendo no Body o meu ID pegando o reference byed e fazendo essa consulta e aqui ele tá dando um erro lá na nossa aplicação ele tá dando um erro de tipo Porque eu tô tentando passar ó quer ver uma hora dessa rodando e 10 minutos procurando
um erro sim [Música] mas aqui eu quero eu quero descobrir o que está dando Body eu não vou receber por mas já foi bom para explicar para vocês então vamos ver aqui o que que tá rolando eu tenho que fazer eu acho que é a feira tem canal na Twitch não não tenho canal na Twitch para quem tá chegando na Live agora a gente está debugando aqui porque eu tô enfrentando um erro muito besta e que eu não tô conseguindo achar o problema do meu erro e daqui a pouco vou até recorrer o chat a
pt porque é um errinho de tipo ali Porque eu tô tentando passar o meu ID por parâmetro lá no body e tá dando um erro na hora que ele vai pegar e sair do Body e fazer descentralização e criar o meu Record E aí eu não tô entendendo o que que tá rolando e nas lives sempre lá acontece esses erros e é por isso que eu gosto de fazer Live code porque a gente faz Só tutorial a gente mostra só o mundo perfeito onde alguém que não tem erro não faz the bug não faz nada
mas aqui no caso tipo sempre acontecer sempre quando eu tô programando e vocês também a gente sofre por erros às vezes eu passo horas procurando um erro e um Riquinho besta então aqui vamos descobrir o que que tá rolando Eu acho que eu vou até recorrer o chat a pt tô recebendo aqui meu dedo eu nem tô chegando nem tá chegando aqui no corpo da requisição se é uma string o Haiti tá como long não aí dia lá na entidade ele tá com uma string e lá no meu Quest Project também ele tá com uma
string e aqui ó no meu insônia eu tô passando como uma string também a vida de deve É essa mesmo Sim gente eu tenho certeza que deve ser o erro mais besta do mundo e depois vou morrer de vergonha que eu passei o erro aqui ao vivo com vocês mas faz parte sobre isso deixa eu executar de novo que até me esqueci o que eu tava fazendo Ah é tava mostrando para vocês os tipos aqui então Ó o meu ID aqui tá como uma string lá no nosso request produtt que é o nosso como uma
string também se vocês pegarem o erro antes que eu vou mandando aí no chat que a gente continua sério eu não tô conseguindo entender porque que não tá conseguindo pegar esse trem ali de dentro a Live vai ficar gravada Sim ela vai ficar gravada a gente sempre fica gravada aqui no canal tá eu mandei de propósito só para ver se ele tá chegando lá poderia utilizar também mas eu criei como mais lindo só para facilitar Mas acabou que mais me complicou do que me facilitou aqui cara que doideira eu não tô conseguindo ver o que
que tá rolando na hora de passar o valor tá passando 4 mil em vez de 400 Ah mas não tem problema isso aqui tipo não é esse o problema o problema é o nosso ID aqui é bem porque se eu tiro o ID ele vai dar outro erro daí ele vai dizer o ID mas no outro erro esse eu mando ele dá um erro do id então o problema é que o nosso ID Eu só não estou identificando Qual o problema na hora de definir o tipo do meu ID porque aqui eu recebo como como
uma string e era só para conseguir pegar esses trem sabe não era para dar erro que tipo eu declarei que meu Record que esse aí de uma string e aqui eu tô recebendo mais string no meu corpo não era para tá dando erro na entidade está o Ward no parâmetro do ursponcient não deve ser o id não deveria ser o ID ao invés de string aqui você diz não mas o problema tipo O problema não é aqui na nossa entidade porque quer ver vamos só ter certeza eu vou comentar esse código aqui para vocês verem
vou tirar ele tá dando erro antes mesmo de chegar ali na nossa definição do repositro e buscar o dado e tal ele tá dando erro aqui no nosso aquisição mesmo na hora do bem validation fazer a validação do nosso corpo Pelo que eu entendi Aí sim conteúdo sim gente aqui a Live code ao vivo mesmo eu não preparei aplicação antes não tem nada escondido tipo é isso mesmo né eu vivo cara é problema não responsiente também boa boa tá então já sei que é bem pensado não sei com certeza mas agora já sei que é
na hora de eu fazer essa busca aqui é na hora de buscar pelo id que ele tá dando erro quer ver é na hora de fazer o getfense então aqui eu vou ter que transformar esse meu ID no valor de correto é isso tá tira validação não é não é validação problema é aqui na hora do reposituring buscar o meu dado então eu tava procurando o erro ali na nossa validação e não era ali o erro eu não li aquilo o log a stac 3 corretamente não é ali é aqui na hora do meu repositor
fazer o getreference E aí eu tô passando aqui meu ID Talvez esse dia que não esteja com o tipo correto mas eu vou recorrer ao chat PT aqui ao vivo porque tá demorando bastante já já era para ter matado esse erro aqui vamos ver usam you find byed mas o find by é de não posso fazer também mas aqui eu vou ter que fazer a transformação vamos tentar Vamos tentar eu vou tirar esse save aqui não precisa e gente foi lá para o post meu Deus que doideira que eu fiz aqui isso vem tudo aqui
olha aqui não tinha visto que eu tava no poste Aqui vamos trocar aqui para opcional porque ele pode não encontrar então por isso que ele tá pedindo a gente troca aqui para o pistão porque isso aqui pode não vir a gente está fazendo um Fight Mas a gente pode tentar dessa forma aqui vou tirar aqui eu vou colocar no Body esse meu produts e vamos ver se vai dar certo vou dar um Reload vamos esperar reiniciar esse crude dá para usar naquele projeto de desenvolveu essa semana resolvendo o desafio de vaga frontiend não lá no
desafio de front a gente usou a gente consumiu de uma epi grafield Ah agora funcionou não deixa eu ver aí ele não encontrou ele não encontrou o meu objeto pelo id lá no nosso no nosso desafio de vaga front-end ele eu fiz a configuração com uma epi grafitel porque lá na descrição do desafio eles pediram que a gente consumisse uma epi grafield e a forma de fazer requisição para uma graffel é diferente então o que a gente está construindo aqui hoje de Cruze não daria para usar lá naquele caso mas você pode construir uma Apple
Fiel ele imprimiu no log tá vindo certo sim o que ele imprimiu aqui veio do Body ele não imprimiu que ele encontrou tipo que eu posso botar um ponto alto então aqui eu vou ter que fazer um teste desse dele aí de que tá com mais string para o tipo correto eu acho vou iniciar aqui minha aplicação de novo só para a gente ver Nossa galera já foi quase duas horas de Live daqui a pouco eu já vou encerrar Live porque eu tenho que comer eu sempre penso assim ah vou fazer só uma hora de
Live aí quando vê já deu duas horas de Live e agora já tá me dando uma fome vamos só derrubar mais um pouquinho aqui e aí eu já vou indo para o final da Live aí qualquer coisa a gente termina a nossa aplicação aqui outro dia Faltou só o nosso método Punch que deu erro e depois o nosso método holerite Vamos mandar aqui a requisição ó ptima deixa eu pegar aqui ponto Cat que eu tenho que fazer aqui eu vou trocar eu vou falar para o chá de PT ele vai me ajudar agora porque a
gente tem que fazer um stream desse lado aqui vamos lá para o nosso amigo chá de GPT e vamos ver o que que tá rolando vou falar assim ó deixa eu pegar criei uma entidade JPA onde meu ID é o id e eu declarei o tipo como uma estrela na hora de fazer a busca por aí de passar uma stream ele está me retornando um erro consegue identificar o que está acontecendo eu adoro chatinha PT para isso tipo só para fazer umas consultas assim com ele porque às vezes do tipo tá um tempão no errinho
E aí ele vê tipo assim dois segundos e já consegue saber o que que tá rolando então vou passar aqui para ele segue código do método do controle Salve Gabriel mandou um salve Fê Salve Gabriel e aí tudo bem a gente tá fazendo um the bug aqui ao vivo porque eu tô sofrendo um erro muito besta na hora de pegar o meu ID que tá vindo embora pra gente fazer o nosso Punch erros ao vivo e sem esconder Então deixa eu pegar aqui mandar a classe inteira para ele mandar só isso aqui para ele Abrir
minhas fotos aqui meus gatinhos e segue a classe da minha Entidade para quem não tá entendendo o erro que tá rolando aqui é porque na hora que eu tô tentando fazer o meu a minha busca do meu dado pelo id ele tá dando um erro de tipo porque o Edir eu tô vendo como uma string e ele tá dizendo que não é uma estranha não era para ser uma string e aqui ele tá dizendo ó que eu tinha que ter declarado o meu o meu aí de como o e na hora de fazer a consulta
só que eu não acho que eu tinha que declarar não acho que eu tinha que ter declarado como um ID porque lá no meu trabalho às vezes eu faço desse jeito e não declaro como o ID eu declaro como uma string mesmo mas normalmente a gente faz um teste só que eu me esqueci agora como é que a gente faz e na hora de fazer a consulta eu posso passar uma string o óleo de já foi bom assim quando você tiver tipo [Música] mas o meu request Project que é meu tem esse tipo aqui não
não tava certo com fly de Baía de gente ele tava retornando vazio ele não tava retornando nada tipo ele não tava mais lançando erro mas o find ele não lança erro entendeu então não tava dando tipo não tava encontrando nada quando usava o find bide entendi no seu desse outro compadita definido como uma string nesse caso se você quiser passar uma stream como tá isso é o que eu tô fazendo do seu repositor string assim o seu repositório possui tá dessa forma string diretamente sem a necessidade de converter para um ID sim exatamente o que
eu tava pensando não tenha necessidade só que tem mais algum erro que eu tô me esquecendo que eu não tô conseguindo lembrar meu Deus tá me dando uma agonia já o que que eu tô esquecendo cara tem alguma coisinha uma pequena coisinha que a gente tem que fazer eu faço esse tipo de direto e me esqueci agora certifique se tiver a configuração de sua cidade está correta certifique explicar a notação a dia esteja corretamente aplicada sim aqui ó a minha identidade tá certa gente só o PT me sugeriu trocar isso aqui para um tipo o
ID mas eu já fiz sem ser com tipo entendeu Só tá faltando alguma coisa mas a gente pode trocar também vamos ver product que te passei baseado no quest Project que te passei e no controle e na Entidade consegue ver o que está rolando de erro super monologando aqui com chat FT né problema está ocorrendo porque você está definindo no seu idioma mas a entidade utilizando o tipo o ID para definir a string Ah será que você fizer isso trocar o tipo eu vou ter que importar útil não dá o relógio Pode ser que seja
isso mas lá a minha entidade não tá com esse tipo Mas pode ser que seja isso mesmo o ID que not Beco Verde to stream aí ele deu outro erro aqui porque aqui ele espera uma string pelo que eu tava tentando fazer o meu agora ele deu outro erro porque esse get ufrence bytegia aqui espero mais trem ele não espera um tipo aí entendeu por isso que eu não tô entendendo porque que ele tá dando erro aqui tem que ser uma string seu executar de novo agora ele vai parar de dar esse erro logo que
ele faz humilde porque o gatreference vai é de espera uma stream e eu tô recebendo uma string e tô tentando passar esse trem para fazer a consulta em quanto tempo estudando HTML CSS acha que eu consigo estágio vaga normal bom por exemplo eu estudei HTML cssjs por sei lá uns 6 7 meses até conseguir estágio porém o mercado estava muito diferente na época na época tinha bastante vaga de estágio aberta tinha um pouco menos de gente entrando na área era na época ali que tinha recém começado a pandemia então várias empresas estava abrindo vagas de
programador porque estavam precisando criar Projeto Criar aplicativo criar né seu site Então tinha bastante vaga em aberto só que isso muda muito de empresa para empresa de empresa para empresa nada de pessoa para pessoa porque por exemplo para mim eu posso ter levado 6 7 meses para conseguir estudar o que eu me sentia confiante ou para passar numa vaga para ti tu pode demorar cinco meses um ano isso não é muito tipo assim padrão para todo mundo sabe isso muda de pessoa para pessoa então não tem muito como eu te dizer o importante é assim
você já consegue construir algumas aplicações algumas interfaces fazer manipulações tu já sabe o necessário para te aplicar para uma de tarde porque todo mundo sabe que o estagiário não vai saber tudo estagiário não é alguém ali que tá entrando para saber tudo e sair rodando assim no momento que ele entrar a gente sabe que o estagiário vai passar por um processo de aprendizado ele vai aprender muitas outras coisas também sem ser só de código então vai aprender a questão de scrum né método usagens Como usar o Git com muita gente né ou github no caso
o Git para o vendecionamento e o github como plataforma diversionamento ou tem empresas que usa um get leve Então tudo isso a gente passa por um processo de aprendizagem que demora um pouquinho então assim estudando essas essas ferramentas que tu comentou começa a praticar E já começa a te aplicar para as vagas de estágio que aí tu vai aprendendo durante as entrevistas de estágio também durante os desafios etc você tem que encapsular sobre Quest getset na requisição ele considera o get nome por isso está dando erro coloca o getset o confio lombok disponível gente eu
vou passar você já fez mas está errado olha o banco aí passa uma de proporcional sem ser o ID como pegar experiência como programador sem faculdade eu já coloquei lá no Insta acho que foi ontem eu compartilhei um Rios dando algumas dicas de como pode conseguir experiência sem precisar ter feito faculdade por exemplo pode contribuir para projetos Open Stories Então não precisa ser projetos enormes mas projetos pequenos Então dessa forma experiência de como usar o Git ali num projeto com mais pessoas que estão utilizando e para contribuir em projetos numa escala um pouco maior do
que só os que tu desenvolve sozinho Tu também pode criar extensões para ver se esconde Estações para o Google Chrome usar isso para o teu portfólio para o teu currículo por exemplo quando eu tava começando eu criei uma extensão por vscold uma para o Google Chrome também lá para faculdade mas a do vs code foi bem legal porque eu uso até hoje essa extensão foi para facilitar meu dia a dia e foi muito massa compartilhar aqui no Linkedin falar nas entrevistas que eu tinha feito uma extensão por vscold para facilitar meu dia isso tipo assim
brilha os olhos de quem tá te fazendo a entrevista mostra que tu tem interesse e mostra que tu tava buscando né colocar em prática as coisas que tu tá aprendendo mas o que tu não tava trabalhando galera para a gente resolver esse problema eu vou fazer uma live Talvez esse final de semana de novo a gente continua daqui da onde a gente parou mesmo porque já tá ficando bem tarde já foram duas horas de Live E aí no outro dia quando a gente continuava tapamente mais fresca e eu vou conseguir ver aqui que tá rolando
de erro porque é só um errinho de tipo aqui é um Cash pessoal aqui já tava falando já tem algumas ideias do que pode ser mas eu vou encerrando a Live por aqui porque eu tô ficando com fome também vocês já devem estar cansados de ficar assistindo Mas não se preocupe que a gente vai terminar projeto juro para vocês no máximo esse final de semana a gente faz a Live e resolve esse problema aqui ao vivo de novo então Galera podem ir mandando mais algumas perguntas aí eu vou aí respondendo E aí a gente já
vai encerrando a Live a gente não conseguiu construir o método útil de Elite porque a gente travou no Porque eu travei no errinho bobinho mas a gente vai continuar de novo como eu já falei para vocês a gente vai continuar esse projeto não tem problema que mais se vocês tiverem mais perguntas vão mandando aí no chat que eu vou respondendo tem repositório para esse cara para a gente poder ir vendo Tem sim eu deixei o repositório aqui na descrição do vídeo agora eu vou comentar todas essas alterações aqui que a gente fez e vou colocar
lá no repositório também caso vocês queiram dando uma investigada E aí tipo já chegarem prontos para a próxima Live para saber o que que era esse erro quem tiver deixa eu ver aqui se tem mais alguma dúvida vida se deve é isso porque é bom que você entrou sim gente juro para vocês quase Sei lá o tempo que eu passo kodando no meu trabalho Digamos que é 50% do tempo que eu trabalho porque no resto dos outros 50 a gente passa em reunião atualizando board participando de alinhamento etc então 50% tempo eu passo por dentro
desse 50% do tempo que eu passo rodando acho que 10% eu passo ficou dando mesmo os outros 40% eu passo de bugando e procurando erros e eu não sei vocês mas é muito diferente a gente programar aqui ao vivo com alguém te assistindo e que tipo com um chat aqui bombando Então me desconcentra bastante também então às vezes aqui você quem já tava participando das outras Live code sabe que às vezes eu tomava uns errinho de CSS também sei lá um erro do react e isso é super comum mas eu acho isso super importante para
a gente sei lá desmistificar a programação também porque programação é isso gente a gente tá aqui para resolver erro a gente está resolvendo erro com uma linguagem de programação a linguagem que melhor se adequar para nós e o nosso dia a dia é esse o nosso dia a dia é resolver erro resolver bug tomar e rindo besta subir erro em produção Então é isso galera vou encerrando a Live por aqui porque eu tenho que trabalhar também hoje eu não tinha falado para vocês mas daqui a pouco eu já vou entrar no trabalho a gente vai
ter implantação então eu não vou conseguir seguir mas a gente termina nesse final de semana e aí termina o nosso projeto e corrige esse reino bobo que pegou a gente aqui hoje o Cícero mandou vou mudar de linguagem para já baixar projetos abertos está difícil tem um livro para recomendar bom livro para Java eu não conheço muito eu aprendi mais Java se envia tutorial dentro documentação etc cheguei bem atrasado estava na academia fazendo e fazendo depor antes passando para dar um boa noite aí valeu a Débora eu vou fazer depóia daqui a pouco também Na
verdade tô até atrasada já tem que logar lá no trabalho porque a gente vai vai fazer depois o Jacinto mandou muito bom Fê programação verdadeira é isso mesmo Valeu galera sério esse apoio de vocês é muito importante também para a gente trazer esse conteúdo porque eu poderia muito bem ter preparado tudo antes gravado só um tutorial e mostrado só o mundo né de flores tudo dando certo etc mas para mim é o real né tipo é mostrar isso ele bugando ao vivo dando erro e enfrentando um problema problema besta que todo mundo enfrenta independente do
nível de Senior idade qualquer pessoa vai enfrentar um probleminha besta uma vez na vida então meu objetivo com Live code a tipo eu interagir com vocês e programando o que eu vivo enfrentando o problema mesmo não é para trazer um mundo perfeito aqui então deixa eu ver o Lord mandou Acabei de chegar na Live e acabou sim tá acabando galera porque eu tô com fome eu tenho que trabalhar ainda então é isso gente eu vou encerrando mais uma live por aqui obrigado a todo mundo que participou eu gosto muito que Vocês participam interagem comigo falam
Ah Fê tá errado ali tu errou Nisso tu errando aquilo tem que falar mesmo se vocês verem aí que eu tô fazendo alguma coisa errada vai mandando se vocês tiverem alguma coisa alguma dúvida Vamos andando também e bom obrigada novamente para quem participou até aqui a Live vai ficar gravada o repositório tá aqui na descrição do vídeo Então quem chegou no final pode assistir depois de novo toda a explicação Inicial que eu dei aqui já Spring de repositório de banco de dados etc e é isso gente eu vou indo lá porque eu tenho que jantar
ainda e tem que trabalhar Obrigada novamente por todo mundo que participou da Live e nesse final de semana a gente vai resolver esse maldito bug que agora eu tô vou dormir sonhando com esse bugzinho aqui que eu tenho certeza que vai ser uma coisa que a gente vai mudar e vai falar ah não que eu errei isso mas Bom enfim galera vou indo lá e muito obrigado de novo falou isso vou encerrando aqui a Live boa noite [Música]