Qual o melhor, Lombok ou Records?

Поделиться
HTML-код
  • Опубликовано: 22 янв 2025

Комментарии • 82

  • @jonatasoliveira800
    @jonatasoliveira800 Год назад +22

    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.

    • @pedro2001
      @pedro2001 Год назад

      Concordo!

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад +5

      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

    • @jonatasoliveira800
      @jonatasoliveira800 11 месяцев назад +2

      @@giulianabezerra ficou otima a explicação no video, eu disse mais pra quem ta começando e não tem essa noção ainda.

  • @abnerjosebarbosa4010
    @abnerjosebarbosa4010 8 месяцев назад +3

    Uso lombok na entidade e record no dto.

  • @fernandon1626
    @fernandon1626 Год назад +9

    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

  • @felipessca
    @felipessca Год назад +4

    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.

  • @RicardoSantos-wl1bg
    @RicardoSantos-wl1bg Год назад +2

    Eu gosto do Lombok, continuo utilizando

  • @JeffersonLuizCruz
    @JeffersonLuizCruz 10 месяцев назад +1

    Que aula!

  • @hudsonlucas5049
    @hudsonlucas5049 Год назад +1

    Gulia, passando só para avisar que estou usando os seus vídeos, basicamente como referência na minha empresa e geral curtiu.

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      Que ótimo! Vlw demais pelo apoio 🤩🙏

  • @christhianlor
    @christhianlor 9 месяцев назад +1

    Como bem explicado no final, há suas particularidades na aplicabilidade de ambos.

  • @DavidsonEstevesNunes
    @DavidsonEstevesNunes Год назад +1

    Excelente abordagem mostrando prós e contras. Por hora fico com o lombok :D

  • @Lucas-iu8gd
    @Lucas-iu8gd Год назад +1

    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,

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад +3

      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_bolonhini
      @mrl2_bolonhini 9 месяцев назад

      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-iu8gd
      @Lucas-iu8gd 9 месяцев назад

      @@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.

  • @SedracCalupeteca
    @SedracCalupeteca Год назад +1

    O que eu gostaria de Java dar suporta construtor nomeado nos records

  • @christhianlor
    @christhianlor 9 месяцев назад +1

    Excelente comparativo!

  • @ggeraldi
    @ggeraldi Год назад +1

    otima aula sobre o assunto.

  • @guimarin_
    @guimarin_ Год назад +1

    Sensacional :D

  • @marcosgarcia179
    @marcosgarcia179 Год назад +2

    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 😁

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      Tbm tendo mais pro lado dos records

    • @rodrigofelixdev
      @rodrigofelixdev 9 месяцев назад

      O problema do construtor ao invés do builder. Se você pegar uma classe com muito atributos?

  • @ThiagoLimaRocks
    @ThiagoLimaRocks 9 месяцев назад +1

    Que teclado barulhento viu hahahah Boa explicação @Giuliana.

  • @vluquini
    @vluquini Год назад +2

    ótima aula giu, você explica muito bem!!

  • @mgmoura
    @mgmoura Год назад +1

    excelente video !

  • @rafaelvieira9367
    @rafaelvieira9367 9 месяцев назад

    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.

  • @cleverson_lira
    @cleverson_lira 7 месяцев назад +2

    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!

  • @Leonardo55x
    @Leonardo55x Год назад +1

    muito bom ❤

  • @luizfelipeburgattjolo6578
    @luizfelipeburgattjolo6578 8 месяцев назад +1

    como sempre, depende 😁

  • @pedrolobo9835
    @pedrolobo9835 11 месяцев назад

    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

  • @hsmiranda
    @hsmiranda Год назад

    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.

  • @gildocode7
    @gildocode7 Год назад

    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...

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      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! 😊

  • @DaviMello
    @DaviMello Год назад +2

    Mais um video top! Pergunta, pq largou o IntelliJ?

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад +2

      Acho o vscode mais enxuto e tem tudo que eu preciso. Fora que já me acostumei com os atalhos de produtividade 😁

  • @LUcasDrumify
    @LUcasDrumify 2 месяца назад

    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.

  • @SedracCalupeteca
    @SedracCalupeteca Год назад

    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.

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      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

  • @LeoKashmir
    @LeoKashmir 9 месяцев назад

    Legal.🤟

  • @niltonfernandes7928
    @niltonfernandes7928 8 месяцев назад

    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.

    • @giulianabezerra
      @giulianabezerra  8 месяцев назад

      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.

  • @leonardo5695627
    @leonardo5695627 9 месяцев назад

    Construtor compacto - uauuu!!! xD essa me pegou :c)

  • @antonioamaral2406
    @antonioamaral2406 Год назад

    Oi Giuliana! Qual tema é essa do VSCode e qual essa extensão de auto-complete, por favor? Obrigado!

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      O tema é o insomnia e a extensão é o copilot, mas essa extensão é paga

  • @lulinha-bolchevera
    @lulinha-bolchevera Год назад

    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.

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад +1

      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-bolchevera
      @lulinha-bolchevera 11 месяцев назад

      @@giulianabezerra Muito obrigado!

  • @rodrigofelixdev
    @rodrigofelixdev 9 месяцев назад

    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?

  • @diegopessoa6959
    @diegopessoa6959 Год назад +2

    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

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад +1

      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

  • @rodolfogoncalves286
    @rodolfogoncalves286 9 месяцев назад

    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!!!

  • @annarafadev
    @annarafadev 9 месяцев назад

    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?

    • @giulianabezerra
      @giulianabezerra  9 месяцев назад +1

      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.

  • @BalderGibran
    @BalderGibran 10 месяцев назад

    Giuliana, e qdo tratamos de entidades que tem um ID que é gerado pelo Hibernate por exemplo, tem como usar o Record?

    • @giulianabezerra
      @giulianabezerra  10 месяцев назад

      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.

  • @iarlensantos3588
    @iarlensantos3588 Год назад

    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)

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      Pra iniciantes eu indico usar o Java e não focar em frameworks externos, fazer get e set mesmo ou já usar records

  • @diegorbaptista
    @diegorbaptista Год назад

    Parabéns pelo vídeo Giuliana! Esse autocomplete sinistro que você está usando é extensão de algum copilot? É gratuito?

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      Kkk, é o copilot e ele é pago, não tem gratuito infelizmente 😔

  • @EdersonLCaldatto
    @EdersonLCaldatto 11 месяцев назад

    Não encontrei mais o outro video que você fez falando especificamente sobre record, exclui ele ?

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      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

    • @EdersonLCaldatto
      @EdersonLCaldatto 11 месяцев назад

      @@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

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад +1

      @@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!

  • @andrebonatti5073
    @andrebonatti5073 9 месяцев назад

    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.

  • @marcelquinteiro4560
    @marcelquinteiro4560 Год назад

    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.

  • @igorsilva736
    @igorsilva736 8 месяцев назад

    o record do Java é equivalente ao data class do Kotlin, mas o data class dá pra ser mutável se quiser

  • @alissonyoussf
    @alissonyoussf Год назад

    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.

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад +2

      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 😉😔

    • @alissonyoussf
      @alissonyoussf 11 месяцев назад

      @@giulianabezerra Vou sim. Muito grato.

  • @luuke11
    @luuke11 Год назад +1

    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.

    • @giulianabezerra
      @giulianabezerra  11 месяцев назад

      Builder é costume, é mais legível depois que vc acostuma, em relação a um construtor com vários parâmetros

  • @Nosbielc
    @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
      @giulianabezerra  Год назад +4

      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
    @DannielCristie Год назад +2

    Excelente aula. Mas na questão de desempenho é o mesmo?
    Tem algo no Record igual ao @RequiredArgsConstructor do lombok?

    • @giulianabezerra
      @giulianabezerra  Год назад +3

      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 😊

  • @RonaldoHabibiDev
    @RonaldoHabibiDev Год назад +1