Java : `record` ou classe classique pour mes DTO ?

poze 2 months ago203 gadefr

4

Depuis Java 16 on a les record. Est-ce que je devrais remplacer mes DTO Lombok @Data par des records ?

Anviwònman:Java 21

Dyagnostik IA

Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.

poze 2 months ago

1 Repons

5
✓
✓ Repons yo aksepte

Pour des DTO (objets de transfert immuables), oui, les record sont idéaux :

public record UserDto(Long id, String email, String displayName) {
  public UserDto {
    Objects.requireNonNull(email); // validation dans le constructeur compact
  }
}

Tu obtiens gratuitement le constructeur, les accesseurs (email()), equals, hashCode et toString, sans dépendance Lombok. Jackson et Spring Boot 3 les gèrent nativement, validation @Valid comprise.

Garde des classes pour : - les entités JPA : Hibernate a besoin d'un constructeur sans argument, de mutabilité et de proxies, ce qui est incompatible avec les records ; - les objets à état mutable ou avec héritage.

Konekte pou di lòt moun si li te mache.

answered 2 months ago

Sign in and verify your email to post an answer.