Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Record vs Lombok

Estou confuso com suas definições!!!

Um Record é similar a um JavaBean, possui construtor, atributos e métodos acessores. Mas não precisa definir...

ex. public record Pessoa(String firstName, String lastName,){}

Temos uma classe é imutável. (Não entendi o pq ter uma classe imutável) Isso quer dizer que ele internamente uma JavaBean.....Sem a possibilidade de alterar("Não há possibilidade de apenas criar os métodos de leitura.... internamente irá criar construtor, atributos, métodos acessores, métodos equals, hashCode e toString() )

Já o Lombok é uma biblioteca Java que permite criar um código Java utilizando anotações que permitem substituir a criação de getters e setters, métodos equals, builders e entre outros. Ou seja tenho um certo controle sobre a Classe, pois posso dizer quem será os atributos que serão de leitura e de escrita por exemplo.... coisa que não tenho como fazer no record.... é isso????

Ex. import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date;

@AllArgsConstructor @NoArgsConstructor @Data public class Pessoa { private Long id; private String firstName; private String lastName; private Date birthDate;}

São muitas dúvidas!!!!

1 resposta
solução!

Oi!

Lombok e record são recursos distintos e com objetivos diferentes também.

O Lombok é uma biblioteca que serve apenas para evitar ter que ficar "poluindo" uma classe com métodos comuns do Java (getter/setter/construtores/equals/hashCode). Como são métodos que tem sempre o mesmo formato, o Lombok consegue gerar tais métodos via anotações e com isso sua classe fica mais "limpa", contendo apenas os atributos e os métodos que possuem alguma lógica.

Já o record é um recurso do próprio Java, utilizado para criar uma classe imutável de maneira simples também, sem a "poluição" das coisas do Java (getter/setter/construtores/equals/hashCode), que são geradas automaticamente pelo próprio Java.

Na teoria, parecem fazer a mesma coisa, e fica a impressão de que o record veio para evitar que você precise utilizar o Lombok no projeto. Em parte isso é verdade. Porém, o Record tem um diferença, que é a geração de uma classe imutável, ou seja, ele acaba sendo utilizado no lugar de classes que servem apenas para representar dados, sendo o exemplo mais clássico as classes que seguem o padrão DTO, muito utilizadas em APIs Rest para representar as informações que chegam e saem da API no formato JSON.

Mas nem toda classe do projeto poderá ser substituída por um record. Por exemplo, entidades JPA, pois a JPA não aceita que esse tipo de classe seja imutável. As entidades continuam sendo representadas por classes Java comum. Ou seja, é comum continuar a utilizar o Lombok em entidades JPA, para evitar a poluição dos códigos que ele gera automaticamente via anotação.

Ou seja, ambos podem ser utilizados em conjunto numa mesma aplicação, sendo que cada será utilizado em um local mais apropriado. Lombok é comum de ser utilizado em entidades JPA e os records são comuns nas classes DTO que são utilizadas nos controllers.

Bons estudos!