Pra quem ficou em duvida de qual usar, usem os dois kkkkkk os records são muito praticos para serem usados como DTOs ou DAOs ja que irão servir meramente para transportar informações representadas da nossa Entidade, enquanto as anotações do lombok são otimas na hora de construir nossa Entidade relacional que precisa ser mais detalhada.
@pedro200111 ай бұрын
Concordo!
@giulianabezerra10 ай бұрын
Boa, não sei se no vídeo ficou parecendo que é apenas um ou outro, de fato dependendo do caso os dois podem ser úteis, como sempre, depende
@jonatasoliveira80010 ай бұрын
@@giulianabezerra ficou otima a explicação no video, eu disse mais pra quem ta começando e não tem essa noção ainda.
@fernandon162611 ай бұрын
Abandonei o lombok e model mapper nos projetos a partir do java 17. Uso os records como DTOs de requests e response e nos DTOs para consumir outras apis pelo feign, como o codigo fica simples pode ate usar nested
@mathgomes01able11 ай бұрын
É para mapear oq usa?
@felipessca11 ай бұрын
Muito bom, eu ainda uso lombok nos dtos entre camadas, quando tenho que mapear uma entidade para dto com mapstruct por exemplo, mas o response final estou usando sempre o record.
@abnerjosebarbosa40107 ай бұрын
Uso lombok na entidade e record no dto.
@JeffersonLuizCruz9 ай бұрын
Que aula!
@RicardoSantos-wl1bg11 ай бұрын
Eu gosto do Lombok, continuo utilizando
@cleverson_lira6 ай бұрын
Sou sempre a favor de utilizar recursos da linguagem ao invés de bibliotecas de terceiros. O Boiler Plate quem gera para nós é a IDE. Parabéns pelo vídeo!
@christhianlor8 ай бұрын
Excelente comparativo!
@hudsonlucas504911 ай бұрын
Gulia, passando só para avisar que estou usando os seus vídeos, basicamente como referência na minha empresa e geral curtiu.
@giulianabezerra10 ай бұрын
Que ótimo! Vlw demais pelo apoio 🤩🙏
@vluquini11 ай бұрын
ótima aula giu, você explica muito bem!!
@giulianabezerra10 ай бұрын
Muito obrigada 😃
@ggeraldi11 ай бұрын
otima aula sobre o assunto.
@DavidsonEstevesNunes11 ай бұрын
Excelente abordagem mostrando prós e contras. Por hora fico com o lombok :D
@marcosgarcia17911 ай бұрын
Excelente vídeo...🙂 - Builder não me agrada....prefiro um construtor...🤔 - O uso de biblioteca, nesse caso o lombok, agrega a carga intrínseca para aprendizado, saber o que ele faz.🤓 - Records já me agrada 😁
@giulianabezerra10 ай бұрын
Tbm tendo mais pro lado dos records
@rodrigofelixdev8 ай бұрын
O problema do construtor ao invés do builder. Se você pegar uma classe com muito atributos?
@rafaelvieira93678 ай бұрын
Muito bom o video mesmo essa comparação e explicação! vai ter time (lombok) e time (record) kkk. Eu por exemplo fico dos 2 lados, por que, atualmente na empresa que trabalho utilizo Java 8 sistema legado, então para esse caso vai ser preciso o lombok, porém o record sim é ótimo para sistema que estão com versões compatível removendo a dependência de terceiro que concordo plenamente com você que se por acaso não houver mais manutenção, pode não ser uma boa idea utilizar para um projeto de grande escala e robusto.
@mgmoura11 ай бұрын
excelente video !
@Lucas-iu8gd10 ай бұрын
A principal desvantagem do lombok não foi falada no vídeo, entao complementando: O design da JVM foi feito para aceitar manipulação adicional de bytecode tanto em fase de runtime (usado por libs como Hibernate, Spring, etc) quanto em fase de compilação (caso do Lombok). Porém em fase de compilação, qualquer manipulação de bytecode dinamicamente deve ser feita gerando código extra, e não modificando código já existente, ou seja, o correto seria o lombok gerar uma nova classe User com os metodos implementados, o que não acontece, o lombok mexe diretamente na classe que está anotada, mas como? O lombok utiliza a fase de compilação do java para injetar código na AST da linguagem, e esse "hack" é feito no momento do processamento das annotations (annotation processing) da jvm. Isso tudo pode vir a causar uma série de problemas e incompatibilidades, seja em troca de versões do java, algo que muda no compilador, etc. Records é uma solução built-in, implementada pela propria JVM, que promove imutabilidade e reduz consideravelmente o código boilerplate, prefiram sempre Records ao Lombok,
@giulianabezerra10 ай бұрын
Concordo com vc! Mas já vi muita gente justificar que esse impacto não seria significativo, que uma troca de versão não seria algo traumático de fazer. De fato optar por coisas nativas diminuiu qualquer impacto e é a alternativa que deve ser priorizada, a não ser que realmente não atenda as necessidades da aplicação. O Lombok é bem robusto e está no mercado há bastante tempo, com muitos adeptos em projetos grandes, quem sabe essa implementação dele não seja melhorada no futuro.
@mrl2_bolonhini8 ай бұрын
Estou chegando agora no Java, mas então qual a diferença para as annotations do Spring e porquê ninguém fala em abandoná-lo e fazer tudo na mão?
@Lucas-iu8gd8 ай бұрын
@@mrl2_bolonhini Então, existe uma diferença enorme, o Spring faz as "mágicas" com suas anotações em tempo de execução, o famoso "runtime". O Lombok faz tudo em tempo de compilação, quando seu programa está sendo compilado, o código que o Spring gera dinamicamente já está lá, o do lombok ainda não, e tem outro agravante, com eu falei ali, o design da JVM foi pensado pra receber código novo de forma dinâmica e não modificar código existente, o que o lombok faz é modificar as classes que já existem através de uma injeção de código durante a compilação, resumindo: O Spring processa todas as anotações em "runtime", em tempo de execução, seguindo as "regras" do compilador, o lombok não.
@christhianlor8 ай бұрын
Como bem explicado no final, há suas particularidades na aplicabilidade de ambos.
@Leonardo55x11 ай бұрын
muito bom ❤
@gildocode711 ай бұрын
Boa noite Giuliana... Acompanho seus vídeos e sou inscrito em seu canal, com tópicos sensacionais meus parabéns. Não só eu como muitos aqui que acompanha seu maravilhoso trabalho, queria dicas de como ingressar na primeira vaga. Sou formado em Análise e Desenvolvimento de Sistemas, mas como nas faculdades não formam programadores né rsrs.... Atualmente trabalho como analista de infraestrutura Jr. Olha pra ser sincero aprendi muito mais programação com alguns tutoriais e cursos de curta duração do que o tempo perdido na faculdade. Mas quero saber porque é muito difícil conseguir a primeira vaga para trabalhar com programação? Na empresa onde eu trabalho utilizam Java na parte de Backend, mas só contratam programadores Pleno e Sênior e Júnior não tem vez... Em cima disso que mencionei, gostaria de apenas uma dica, as vezes fico pensando, "Se estou na empresa certa para conseguir minha primeira vaga na área, como já sou do TI, imaginava que teria mais chance de ingressar na programação" mesmo sendo Jr.. Forte Abraço e sucesso...
@giulianabezerra10 ай бұрын
Com certeza trarei vídeo sobre esse assunto! De fato é difícil mesmo para iniciantes, e pra entrar numa vaga muitas vezes a pessoa precisa tentar pra pleno mesmo e continuar estudando para dar conta. Fico devendo esse vídeo, pode deixar! 😊
@hsmiranda11 ай бұрын
Excelente vídeo! Eu particularmente evito o lombok quando é possível, gosto de evitar ter dependências na minhas aplicações sem a real necessidade delas.
@luizfelipeburgattjolo65787 ай бұрын
como sempre, depende 😁
@guimarin_11 ай бұрын
Sensacional :D
@pedrolobo983510 ай бұрын
10:39 Aqui o record me deu uma bugada a primeira vez. Porque está passando os atributos como argumentos e não está declarando private. Antes de voltar o vídeo, fiquei imaginando o que o pessoal ta fazendo com o Java. Até porque tirou o get and set na hora de usar a classe. kkkk
@DaviMello11 ай бұрын
Mais um video top! Pergunta, pq largou o IntelliJ?
@giulianabezerra10 ай бұрын
Acho o vscode mais enxuto e tem tudo que eu preciso. Fora que já me acostumei com os atalhos de produtividade 😁
@SedracCalupeteca11 ай бұрын
Agora utilizo records deste modo evito ter dependencias externas, e acredito records chega a ser mais prático como já sobrecarrega por padrão os método toString, hashCode, e para quem já trabalho com kotlin e tentou usar o lombok as vezes o não funcionar dependendo da versão do kotlin que utilizas, mas afirma que Kotlin já interpreta Java 17 (onde foi finalizado os records mas surgio em Java 16 como previous) ainda não testei, mas acho que seria até meio inrrelevante usar records ou lombok em Kotlin. Ainda eu utilizo o lombok por causa do padrão builder que é oferecido pela anotação @Builder, @SuperBuilder.
@giulianabezerra10 ай бұрын
Sim, o builder é um recurso bem prático do lombok, eu confesso que não costumo usar lombok, eu evito ao máximo dependências externas no projeto
@leonardo56956278 ай бұрын
Construtor compacto - uauuu!!! xD essa me pegou :c)
@SedracCalupeteca11 ай бұрын
O que eu gostaria de Java dar suporta construtor nomeado nos records
@niltonfernandes79287 ай бұрын
boa tarde, antes de mais obrigado pelos seus conteúdos, são muitos bons mesmo. boa didática muita calma em explicar. eu queria saber os plugins estalado no VsCode para otimizar a programação em java eu estou a ver muitos autocompletes e códigos gerado parece esta a utilizar inteligência artificial para geração de codigo.
@giulianabezerra7 ай бұрын
Os autocompletes são do Github Copilot, vc precisa assinar a ferramenta para poder usar a extensão. Ele ajuda para criar projetinhos mais simples, mas pra quem se distrai é bom desabilitar em projetos mais complexos.
@lulinha-bolchevera11 ай бұрын
Estou construindo um projeto de arquitetura hexagonal em spring e fazendo o isolamento do core/domain, um dia pretendo aproveitar este core numa aplicação utilizando a mesma arquitetura, porém com o quarkus. Posso utilizar lombok para reduzir o tamanho das classes nesse core/domain? Acho que muita gente tem essa dúvida.
@giulianabezerra10 ай бұрын
Lombok é dependência externa, então eu não usaria, até pq pode gerar alguns problemas de compatibilidade com versões do Java. Maaaass, eu já vi alguns usando justificando que o impacto em caso de mudança não seria tão grande. Então no fim depende, é uma escolha de arquitetura mesmo
@lulinha-bolchevera10 ай бұрын
@@giulianabezerra Muito obrigado!
@LUcasDrumifyАй бұрын
Acredito que o Lombok também é útil para usar Logs. Não sei dizer se existe alguma maneira de evitar repetição de códigos sem usar o Lombok para Logs.
@marcelquinteiro456011 ай бұрын
no sentido de menos código somente o lombok é bacana, porem o record é um pouco mais que isso(pra não dizer das varias vantagens em uso como DTO), particularmente não uso classe mais como DTO me habituei a usar record e tem funcionado muito bem.
@antonioamaral240611 ай бұрын
Oi Giuliana! Qual tema é essa do VSCode e qual essa extensão de auto-complete, por favor? Obrigado!
@giulianabezerra10 ай бұрын
O tema é o insomnia e a extensão é o copilot, mas essa extensão é paga
@LeoKashmir8 ай бұрын
Legal.🤟
@alissonyoussf11 ай бұрын
Muito top. Parabéns. Como DTO ficou top. E no caso da Entidade? @Entity... Modelo de domínio? Uso Record ou classe com código boilerplate? Se tiver um video implementando records em camadas, com service, controle... agradeço.
@giulianabezerra10 ай бұрын
Pode usar em entity tbm, só vai ter uma implementação um pouco diferente por se tratar de objetos imutáveis. Na playlist de desafio de vagas do canal eu implemento alguns projetos usando records em todas as camadas, depois dá uma olhada 😉😔
@alissonyoussf10 ай бұрын
@@giulianabezerra Vou sim. Muito grato.
@diegorbaptista11 ай бұрын
Parabéns pelo vídeo Giuliana! Esse autocomplete sinistro que você está usando é extensão de algum copilot? É gratuito?
@giulianabezerra10 ай бұрын
Kkk, é o copilot e ele é pago, não tem gratuito infelizmente 😔
@andrebonatti50738 ай бұрын
Lombok tem mais funcionalidades que isso por exemplo nível de abstração de log pelas suas anotações e mais algumas anotações úteis. Concordo que o Record é interessante tem utilidade e facilidade, mas não é exatamente um substituto. Outra coisa, eu era complementarmente contrário ao lombok em sistemas JEE antigos, pois aumentava a complexidade e possibilidade de dar erro no build, pois além da questão de IDE interpretar em runtime através de liba terceiras, tinha a complexidade de maven também ter que ter isso e fazer gerar os códigos que não dão vistos em tempo de build e quebravam, mas isso mudou completamente em sistemas de microservice, onde casa muito a tecnologia e praticamente não tive problemas usando em springboot e quarkus.
@rodolfogoncalves2868 ай бұрын
Quando estamos usando lombok para criarmos nossos getters and setter para todos os atributos de uma classe não estaríamos ferindo o conceito do encapsulamento ? Para este caso faria sentido termos atributos públicos já que todos poderão ser alterados? Lombok insere código em nosso código!!!
@iarlensantos358811 ай бұрын
Para uma pessoa iniciante, a Sra indica que faça da forma que era usado antes (criando manualmente getters e setters) ou usar uma das alternativas? (Lombok e Records)
@giulianabezerra10 ай бұрын
Pra iniciantes eu indico usar o Java e não focar em frameworks externos, fazer get e set mesmo ou já usar records
@ThiagoLimaRocks8 ай бұрын
Que teclado barulhento viu hahahah Boa explicação @Giuliana.
@igorsilva7367 ай бұрын
o record do Java é equivalente ao data class do Kotlin, mas o data class dá pra ser mutável se quiser
@giulianabezerra7 ай бұрын
Kotlin 1 x Java 0 :P
@diegopessoa695911 ай бұрын
Muito bom o conteúdo. Já deixei meu like. Agora fica minha opnião: - Senti falta do builder para os records. - Sobre o eclipse, a configuração do lombok é tão simples quanto ao exemplo mostrado. Não percebo dificuldade como a comentada no vídeo. - E para trabalhar com injeção de dependencia via construtor, senti falta também do @RequiredArgsConstructor
@giulianabezerra10 ай бұрын
Obrigada pelas dicas! Talvez no eclipse seja mais fácil agora, mas em 2016 tinha que baixar um jar e configurar, e dava uns erros bem estranhos pra mim. De fato os records não tem builder, talvez seja uma melhoria futura, vamos aguardar
@BalderGibran8 ай бұрын
Giuliana, e qdo tratamos de entidades que tem um ID que é gerado pelo Hibernate por exemplo, tem como usar o Record?
@giulianabezerra8 ай бұрын
Nesse caso não, quando se usa JPA não dá pra usar records como entidades. Vc pode usar o record pra mapear o resultado das queries, mas para salvar a entidade precisaria de uma classe mutável mesmo.
@rodrigofelixdev8 ай бұрын
Desculpa a ignorância por não entender muito bem sobre as classes imutáveis. Mas há como usar o Records como classe de entidade para o banco de dados?
@annarafadev8 ай бұрын
Eu gosto de utilizar record, mas quando sao dtos com um grande número de atributos as vezes fico com duvida se seria melhor utilizar ele ou lombok, o que vc acha?
@giulianabezerra8 ай бұрын
Eu sempre uso records pra DTOs, até em entidades quando elas não precisam ser mutáveis. O Lombok eu costumo deixar pra entidades do banco que precisam ser atualizadas.
@luuke1111 ай бұрын
Depois que eu descobri o lombok uns 4-5 anos atrás nunca mais parei de usar, a função @Data e construtores são realmente muito úteis e quebram um bom galho , já o builder eu acho bem... viajado, nunca curti e definitivamente nunca usei.
@giulianabezerra10 ай бұрын
Builder é costume, é mais legível depois que vc acostuma, em relação a um construtor com vários parâmetros
@EdersonLCaldatto10 ай бұрын
Não encontrei mais o outro video que você fez falando especificamente sobre record, exclui ele ?
@giulianabezerra10 ай бұрын
Eu não cheguei a falar sobre records exclusivamente, apenas venho usando nos vídeos, esse é o vídeo que trago mais informações sobre eles, mas pretendo fazer um pra focar nesse tema
@EdersonLCaldatto10 ай бұрын
@@giulianabezerra Então confundi com outro vídeo, mas lembro que fez exemplos e usou o pattern with para adicionar valores record após criado, ou estou totalmente enganado e vi em outro vídeo isso
@giulianabezerra10 ай бұрын
@@EdersonLCaldatto ah, foi na playlist da arquitetura ao deploy, no vídeo sobre spring batch ou no do rest api, na playlist vc vai encontrar isso mesmo!
@Nosbielc Жыл бұрын
Caramba assunto bem complicado de se ter uma resposta, porém no meu caso continuarei usando lombok. o Record ainda nao cobre tudo que preciso.
@giulianabezerra Жыл бұрын
Verdade, eu uso os 2, só que uso mais os records mesmo, é que tem situações que preciso do objeto mutável, aí volto pro Lombok.
@DannielCristie Жыл бұрын
Excelente aula. Mas na questão de desempenho é o mesmo? Tem algo no Record igual ao @RequiredArgsConstructor do lombok?
@giulianabezerra Жыл бұрын
Verdade, tem um impacto em tempo de compilação que o lombok traz, que pode deixar builds mais lentos que o uso de records. E sobre o construtor para records acho que precisaria criar as variações desejadas pra ter algo parecido com essa anotação do lombok. Por ser nativo os records vão ser bem mais restritos em funcionalidade, mas aí entra o velho tradeoff 😊