Criando BACKEND COMPLETO do ZERO com JAVA SPRING + POSTGRES + AWS
Vložit
- čas přidán 13. 06. 2024
- ⭐ Seja um membro do canal e tenha acesso à lives, vídeos e conteúdos exclusivos!
/ @kipperdev
Nesse vídeo nos iremos construir o Backend do eventostec.com.br do ZERO. Vamos usar o framwork Java Spring Boot para construção da nossa API e usaremos o banco de dados PostgreSQL. No final, iremos fazer o deploy da nossa aplicação na AWS, usando serviços como EC2, RDS, VPC, S3 e muito mais!
Aprenderemos conceitos como paginação, filtro de resultados, sub redes, modelagem de dados, arquitetura de solução… pra você ficar PRO no Backend💪🏼
🎁 ALCANCE O PRÓXIMO NÍVEL EM PROGRAMAÇÃO (10% OFF)
tr.ee/kipperdev-desconto-one
🔗 Repositório no Github
github.com/Fernanda-Kipper/ev...
👉 Aprenda inglês com 47% OFF
tr.ee/kipperdev-yt-fluencypass
👉 Me siga no instagram!
/ kipper.dev
🌎 Comunidade do Discord
/ discord - Věda a technologie
🎁 APRENDA JAVA NA ROCKET COM 10% OFF
tr.ee/kipperdev-desconto-one
já esta na hora desta moça inteligente gravar curso de java com spring, porque a sua forma de fazer e explicar é de qualidade altissima.
Obrigadaa Airon! 💜💜
Compraria com muito prazer
@@GabrieIKing seria era briga para pegar o curso no lançamento. Rrrsrsrtss. Já estou na fila
Compraria com certeza. Explica super bem!
@@kipperdev Querem na verdade é um curso no onlyfans
Incrível como essa mina é inteligente e sabe muito do assunto, braba de mais 🙅🏻♂️
Não tenho palavras pra explicar o quanto a Fernanda contribui com esses videos para a comunidade. Simplesmente sensacional !!!!
@@GabrielAlves-eu3fb aaaaaa obrigadaa Gab! 💜
Aí Fernanda, tô aqui a um tempo mas não sou muito de comentar. Obrigado por todo conteúdo de sempre, você é uma das poucas produtoras de conteúdo do Java que mostra o ECOSSISTEMA da linguagem... A galera iniciante se prende muito em linguagem, mas no final das contas você precisa é conhecer o ECOSSISTEMA em torno da linguagem que você vai mexer... A linguagem em si "pouco importa", o que importa é que você saiba 20% de cada ferramenta que envolve essa linguagem... Um framework popular, Um Redis pro cache, uma mensageria pique RabbitMQ, uma ferramenta de Cloud, de Containerização, uma pipeline tipo Jenkins, uma ferramenta pra monitorar os logs como o Grafana, um OAuth 2.0/JWT pra autenticação, um JUnit pra testes, etc... pega o básico de cada parada dessa e treina o fluxo mano, com tu faria pra deployar um "Hello World" de verdade... Ao invés de tentar virar o mago da linguagem e fazer o "projeto pika" de mentira... Você é uma das poucas que mostra o que orbita em torno da linguagem... Seria muito irado um conteúdo de message queues tipo um Kafka da vida... Fica ae a sugestão de um inscrito antigo. Sucesso ae pra vc osssss.
Eu também sou “Ituber” e te tenho como referência lá dentro Kipper. Você é um exemplo de dev e acredito que você tem potencial gigantesco. Desejo todo sucesso do mundo!
Por conta disso virei membro do canal. A Fernanda é sensacional. Muito conteúdo excelente.
Muito obrigadaa, Venilson 💜
Muito bom. Parabéns! Seus vídeos estão cada vez melhores!
Conteúdo de qualidade para comunidade, obrigado.
eu estava esperando esse vídeo pra semana que vem pra ter mais tempo para contribuir com o projeto
A aula que estava precisando!
Quando estava iniciando o que procurei de conteúdo clean assim não foi brincadeira. Parabéns, excelente vídeo.
Estou estudando Java Spring, esse vídeo caiu do céu, obrigado Fernanda Kipper
Vou maratonar
Nao conhecia esse canal e confesso que nao esperava um conteúdo de tao alta qualidade e bem explicado assim. Parabéns pelo ótimo trabalho e continue assim, ganhou mais um fã :)
Muito obrigado Fernanda, vc não tem noção do quanto está me ajudando.
Bom demais, conteudo top como sempre. Voltando a estudar depois de um tempo afastado devido as enchentes.
Excelente! 👏
Ótimo video Feh! Assistindo um pouquinho a cada dia! E é legal assistir a sua forma de fazer as coisas porque lembra um pouco os designs patterns que usamos no dia-a-dia. Sempre dá pra aprender algo novo com isso. Sucesso!
Vim porque você apareceu na rinha de Dev do chorume do mano deyvin... Quero acompanhar seu trabalho agora...
Excelente conteúdo.
que conteúdo incrível 👏👏
Bah a guria é imparável parabéns!
tráz um microservices no padrão saga, vamos simular um projeto grande com poucos microservices e usar cache, fila com rabbit ou stream com kafka e distribuir, iria ser bem maneiro.
Simmm! To preparando um conteúdo mais avançado pra tocar nesses tópicos, valeu Luis! 💜
Parabéns pelo projeto, achei bem completo, parabéns, sempre tive dúvida como era o java, agora consegui entender como funciona
Top d+!
Primeiramente parabéns pelo conteúdo Fernanda, você explica tudo muito bem!! Estou realizando uma formação da AWS e sua explicação sobre configuração de alguns serviços ajudou muito!
Manda muito ! Parabéns pelo trabalho 👏👏
Muito obrigada Fran! 💜
Parabéns pelo excelente vídeo didático explicando o desenvolvimento do projeto backend com Java, Spring, PostgreSQL e o deploy na AWS! A sua clareza na apresentação e a forma organizada como estruturou o conteúdo são realmente inspiradoras. Notei que você utilizou migrations Flyway no projeto, o que é uma ótima prática para a gestão e versionamento do banco de dados.
Kkkk parece que foi arranjado, sentei pra assistir seu vídeo de spring security e você lançou esse, já que tô aqui vamos lá, a propósito sensacionais seus vídeos, parabéns viu
Ahahahahaha tudo combinado!
Valeu Ariel, espero que curta esse vídeo tb 💜💜
Se você fizesse um curso de Java/Spring, certamente seria o melhor da web.
MVP merecido .
Comecei a estudar Banco de dados , também vi algumas coisa sobre o figma .Por que queria melhorar um pouco o layout do projeto de eventos.
Curto muito seus vídeo Nanda quase tudo que estudo me mantem atualizado com o que você explica na Live code. Joci é meu nome .
Parabens pelo video Fer . Otimo ver sua explicação
Muito obrigadaa Leticia 💜💜
Fico feliz que tenha gostado
videozao brabissimo, um conteudo que ninguem fez ainda. em um video que da pra assistir em duas horas pqp. fer e um ser celestial de outra dimensao.
hahaha valeuu, Vinii
Eu me esforço pra trazer bastante conteúdo mas sempre com qualidade. Fico muito feliz em ler seu comentário e saber que estou conseguindo 💜
Amo e recomendo pra todos!!! Conteúdo de muita qualidade Fe, tu eh demais!!! 🤍
Top parabéns pelo vídeo. Imagino o quanto foi cansativo gravar. 💪🏻👏🏻👍🏻
Parabéns, Fernanda, muito legal. Sugiro depois de um vídeo de uma estrutura básica de um serviço de autenticação java/springboot com login/senha, e-mail com token para validar o registro, serviço de reset/forget password. E junto um controle no frontend. Quem sabe um dia. Obrigado!
Nanda, pra mim você é perfeita, obrigado pelo conteúdo em java e de longe é o mais atualizado e com didática perfeita! Tenho um curso pago (17 reais por mes 1 ano) e o conteúdo lá é bem desatualizado! Você ta me salvando de vdd, então por favor, não perca essa vontade, esse encanto por passar conhecimento e ainda de forma gratuita, oq ajuda demais esse jovem aprendiz aqui kkkkkkkk infelizmente não consigo retribuir com valores, mas espero que vc consiga ao menos monetizar nas plataformas e assim conseguir continuar fazendo isso! De vdd, obrigado!
(Ignora essa ft de perfil kkkk)
Riquíssima explicação carracas. Como tu consegui tanto conhecimento assim em 4 anos de experiência ?
Vejo muito ela como uma figura materna.
A pessoa até começa a gostar de java kkkk créditos a Fêh
foda demais!
Valeuu, Murilo 💜
Esse tipo de conteúdo é mais voltado para o público intermediário/avançado, pois, quem está iniciando com o Java agora usando interface gráfica e IDE como o Netbeans, por exemplo, fica muito confuso com tanta informação e palavras em inglês que no meu vê, no início mais confundi do que ajuda. De qualquer forma, é um conteúdo muito rico e muito bem feito. Parabéns pelo trabalho Fêh!
alguem aqui ja viu aquele reels do felipe dechamps, que ele faz uma aplicação e pergunta: "como voce programaria isso?"
quando eu vi aquele video, eu nao entendia nada, mas nesse tutorial da kipper e com conhecimentos de fora, fica tudo mais claro e da pra desenrolar de boas
cara, foda viu! mto massa. e é pq nem gosto de java kk
Muito bom o vídeo e estou acompanhando, so fiquei perdido na parte da AWS pois nao tenho muito conhecimento em fazer o IAM e as configurações de usuários.
Video chegou na hora certa to terninando de ver SQL e já vou pro Spring
Boaaa! Já emenda os estudos hahaha
Espero que goste do vídeo 💜
essa analogia da vpc foi muito boa!
Que bom que gostou, João 💜
Fernanda, organizei um evento online e presencial onde tinha palestras online e presencial em algumas faculdades participantes do evento. Nesse caso, existiriam mais de um endereço do evento. Aí a modelagem seria 0 para many em Address.
Parabéns como sempre pelo conteúdo maravilhoso!
Fernanda, seria possível disponibilizar a documentação que você criou no Notion? Gostei muito da organização e gostaria de me inspirar utilizando esse modelo. Brigado pelo vídeo.
Cara, quantos anos essa menina tem? Que talento para explicar e que inteligência absurda!
21
Muito bom, Feh!! Só uma sugestão de vídeo depois: Sobe uma imagem docker da aplicação, e sobre na AWS. Creio que seria interessante essa outra solução também. Seus vídeos sempre são muito bons!!
Valeuu Romeu! 💜
Simm, já tem vídeo de docker aqui no canal, mas depois vou dockerizar essa aplicação tb, valeu pela sugestão 😊
@@kipperdev Fala, feh!! Tudo bem? Pode me tirar uma dúvida? Acompanhando esse último vídeo me surgiu uma dúvida. Da forma como você finalizou sua aplicação, se eu quisesse fazer uma requisição para criar um evento eu já conseguiria? (Não sei se você deixou a instância do EC2 no ar)
Porque como você criou um Gateway de internet onde permite o acesso de qualquer IP, então teoricamente eu já poderia fazer uma requisição aq do meu computador para criar um evento e ele persistir no Banco de Dados, certo?
Sou novo nesse mundo de AWS, tô engatilhando nesse negócio de Gateway, VPC kkkkkkkkkkk
Se vc fizer um curso, com certeza eu vou comprar
Muito obrigado pela confiança Tarsisio 💜
Oi Fernanda, vc pode postar o link onde ensina os comandos do postgresql no terminal, pois n achei em lugar nenhum. Ja tentei baixar o postico, mas vi que só funciona em Mac.
Caiu como uma luva.
spring e muito bom. eu uso nest vou passar a usar spring tambem. Essas dependencias que voce colocou no projeto sao muito maneiras.
Boaa Vini! O bom é ter um portfólio grande de ferramentas e usar a que melhor se adapta em cada situação… mas na dúvida é spring hahaha
ver depois esse sistema com um front bonitao depois vai ser maneiro.
Quando juntar tudo vai ficar muito massa 🤩
Oi Fernanda, que baita conteúdo! Parabéns.. mas me diz uma coisa, porque migrations e não Hibernate? Qual foi sua motivação?
Um grande abraço.
Faz usando angular junto com essas tecnologias!!!
Cara professora, existe algum vídeo seu aonde você faz uma aplicação para o steck incluindo o envio de token jwt do front-end para o back end?
Na verdade qualquer coisa com java me dá um sono tremendo.... mas gostei do conteúdo.
Boa tarde Fernanda, qual a ferramenta que voce costuma utilizar para fazer o MER tanto pessoal quanto no trabalho? DBDesigner, power designer...? Obrigado
Muito bom fernanda, o que me incomoda um pouco é que as vezes você fala gritando kkk mas tirando isso ta tudo ótimo, bom video (y)
Necessária
Fernanda, o que vcs usam para gestão de projetos?
👏👏👏👏
Fernanda, passando aqui pra te agradecer pelo conteúdo, se puder, faz algo voltado a Linux um dia! valeu!
Muito obrigadaa 💜
Relacionado aos respositories, vi que voce colocou todos dentro da pasta, se eu tiver varios repositories é recomendado deixar assim ou criar pastas para cada respository?
Perdi live?
Naooo! É vídeo 🫶🏼
Fernanda tem como disponibilizar o fluxograma do drawio?
Fiquei com uma dúvida, mesmo colocando "Nível gratuito" ao criar o banco de dados na AWS, eu sei serei cobrado ?
Uma dúvida sobre aws. Eu consigo limitar para salvar e acessar as imagens apenas através de um dominio ou ip?
Pra tipo um sistema faz upload e só dentro dele consegue visualizar.
Vlws
Fala Fê, qual versão do Java você recomenda para começar na linguagem?
😍
Muito bom a estrutura montada, vou implementar nesse final de semana esse projeto. Tem o código fonte no github para fim de comparação?
Boaaa! Espero que tenha conseguido fazer o projeto!
Aqui o repo do Github github.com/Fernanda-Kipper/eventostec-backend
Fernanda Já pensou em usar kotlin para spring boot?
essa parte do bucket do AWS ainda deu problema pra mim(1:05:46), alguem mais?
Em 01:20:47 , Fer, você acha mais performático ou menos verbos fazer a chamada para uma storedProcedure no banco PostGreesql para ela fazer a query? Curto deus vídeos. 👏
Curto muito o uso de SP. Mas, no caso do backend que ela usou como é algo simples, uma query resolve facil. SP é interessante usar quando tem uma lógica mais complexa no banco de dados.
Pessoal, na ultima etapa do backend, para ler os detalhes do Event. Do jeito que ela mostrou no video não funcionou aqui. Já que no CouponRepository e no CouponService ela usa UUID eventId, troque UUID pela classe Event. Em getEventDetails no EventService tá ok. Já que ela obtem o event a partir do id do Event registrado, usando findById do eventRepository.
Eu tentei rodar a instancia do backend do jeito que ela mostrou no video. E dava um erro de compilação, mostrando a incompartibilidade dos paramentros UUID e Event.
Tem o vídeo que tu constrói o front ?
Existe outra maneira de fazer a configuração da aws, sem ser pelo modo stardard, sem olhar as configurações que está na maquina ?
Sabe o que acho lindo é voce explicando linha a linha, comando a comando, parece que voce ta lendo um livro e gostando da historia.
eu extrai o projeto e abri em no intellij mas não veio dentro da pasta api o .ideia tem problema ?
Olá, Fernanda, por acaso vc tem alguma live criando uma API usando CQRS e Event Source? Eu imagino que a explicação será a mais "top" de todas !
Oii Gladson! Ainda não temos, mas com certeza vai sair video disso no canal 💜💜💜
(pretendo fazer uns videos mais aprofundados no mes que vem)
Sobre o problema em 30:25: pra mim que estou com o Postgres 16.2 a exceção final é "Unsupported Database: PostgreSQL 16.2", de fato um problema de versão. Pesquisando rapidamente vi que é porque o flyway atual (>10.0) agora é mais modular e tem pacotes específicos para cada database, com poucas exceções tipo SQLite e outras in-memory tipo H2. Pra consertar, nesse caso só adicionar a dependencia flyway-database-postgresql
ah e não precisa importar nada pro get_random_uuid, de acordo com a doc do postgres 16, a função já faz parte do core e quando você importa, ela só chama a do core de qualquer forma
Eu resolvi usando a versão do postgresql 42.5.0 e a do flyway 10.1.0
Tentei fazer com o MongoDB pq não tenho como cadastrar cartao pra AWS, mas não consegui
imagina Fe + Deborah Kurata, o sonho de princesa
Fer os seus conteúdos são sensacionais!! Queria muito um curso completo seu de Java e Spring!
Que bomm que você gosta Lu 💜💜
Amo ler esse tipo de comentário
Quem sabe um dia saia esse curso hahaha
Uma dúvida (que pode parecer boba), se o JPA se encarrega de criar as tabelas que eu defino no meu domain, qual o intuito da execução das migrations pra criação de tabelas, seria uma questão de rastreabilidade de execução das queries?
Com as migrations vc consegue ter um controle de versão das tabelas do banco de dados. Conforme vc precisar modificar o banco/tabelas, vai criando novas migrations e tudo isso fica registrado. A própria documentação do JPA recomenda que a criação automática dos schemas não seja utilizada em produção, somente em um ambiente de desenvolvimento. Em produção o correto é utilizar as migrations.
Bom dia, rapaziada! Podem me tirar uma dúvida? Vocês sabem me dizer porquê na entidade Address ela utilizou a anotação ManyToOne na coluna Event? Sendo que um evento teoricamente não pode está associado a vários endereços? E no diagrama ela mesmo fala que a relação entre evento e tabela é de zero ou um. Fiquei na dúvida.
A relação está ok. Um endereço pode ser usado em mais de um evento só que em datas diferentes.
Oii Romeu, tudo certo?
Nesse caso específico eu poderia ter utilizado a anotação @OneToOne mesmo, para representar a relação entre endereço e evento (zero to one não existe anotação). Eu acabei me confundindo no momento de criar a entidade, e isso pode até causar comportamentos indesejados, pois a entidade Event está com a relação @OneToOne e na tabela address está com @ManyToOne.
Esse post aqui do stackoverflow explica certinho cada um dos mapeamentos de relacionamento, mas nessa parte do video eu errei mesmo!
pt.stackoverflow.com/questions/234755/diferen%C3%A7as-onetomany-manytomany-manytoone-onetoone
Galera , não consigo conectar no meu banco de dados .
Alguém sabe algum vídeo que ensine a instalar e conectar corretamente?
Bem que poderia ter um curso seu na udemy
por volta de 28:30 minutos tive um problema, meu postiço ficou pedindo uma senha para acessar o database server, porem não sei qual senha seria essa, e um pouco pra frente, em 29:35 tu comentou que deixaria um link para fazer esses passos com comandos do Postgres pelo terminal, mas não encontrei também!
eu tambem preciso dos comandos, e nao deu pra usar o postico porque é so pra mac
Pessoal pra quem precisa aí do json:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::nome-do-bucket/*"
}
]
}
Fer eu tneho uma pergunta, na parte de backend em spring, é preciso ter uma controller da home page de um site? ou só o front que cuida disso e o back end cuida de outras coisas?
O framework spring boot é uma evolução do spring mvc que segue um padrão de arquitetura MVC( Model-View-Controller). No spring boot temos esses elementos quando elaboramos as entidades que se relacionam com os campos da tabela, o modelo, o View quando usamos os serviços para obter as informações e trabalhar com as regras de negocio. E o Controller para acesso dessas informações do M e V, criando as APIs que serão usadas no frontend. São três camadas que se relacionam e melhoram o desempenho da aplicação. E facilitam também a correção e manutenção do código. O Controller tem a função de intermediar o frontend com o que foi trabalho no Model e no View, ele encapsula essas informações. Desta forma, é fornecido APIs especificas sem comprometer as regras de negócios usadas na API. O controller do backend não vai controlar a home page. O frontend irá somente utilizá-la para acessar as informações e persistir os dados no qual o MVC controla. E necessariamente, uma API não precisa envolver base de dados. Pode ser simplesmente calculos ou procedimentos importantes que você queira encapsular, como um sistema para monitorar a geração de energia solar.
Aws e bem cara. Eu queria muito fazer um servidor pessoal pra mim, da pra fazer isso tudo em um servidor de caseiro.
Da mesmo! Mas pode ser bem complexo dependendo do que você for fazer.
Se vc fizer isso em uma escala menor serve até para se divulgar no LinkedIn e no currículo!
Olá Fernanda, tenho acompanhado seu canal e me tira uma duvida, tenho o Java 8 por conta de uns projetos especificos que o utilizam , e nem precisa dizer sobre ... porque reparei que nem o 11 aparece mais ai no Spring Initializer, existe algo para eu conviver com o 8 e hoje digamos o 17? eu recordo que para programação por exemplo em Python conseguimos colocar um gerenciador de ambiente ( nem sei se pode ser chamado assim ) e qdo queremos utilizamos uma versão ou outra ... pergunto porque penso que ainda vou usar por um bom tempo o Java 8
Você pode criar uma máquina virtual e instalar uma OS do seu agrado para trabalhar com o java mais atual. Pode usar o Ubuntu, excelente ambiente de programação.
Com a VM não irá precisar mexer com sua configuração do PC.
Tem o link do notion?
Claroo, Vanessa!
metal-flea-041.notion.site/Backend-EventosTec-863242122457486ab9fcb070b9ca36d8?pvs=4
no @GenerateValue da entidades não preciso definir a strategy ?
Sei que ao ignorar a strategy o JpaDb passa a gerenciar a criação da chave primária. E se usasse GeneratedType.IDENTITY como strategy seria a coluna de auto incremento do banco de dados, PostgreSQL, que cuidaria da geração da PKs.
Como ela está usando UUID, então não haverá problemas críticos na geração das chaves. Já se usasse bigserial seria interessante deixar o BD fazer o serviço, usando incrementação.
Para base de dados pequenas UUID resolver bem o problema. Já para maiores, seria interessante usar outras variantes que não aumentem o armazenamento no BD, causando maior custo. E também não dê problemas de insert/indexes, deixando o sistema lento.