Record — simpler, immutable, less boilerplate. Class — more flexible, mutable.
Record for DTOs:
1public record UserDTO(String name, String email, int age) {}23// Usage4UserDTO dto = new UserDTO("Alice", "alice@example.com", 25);5System.out.println(dto); // UserDTO[name=Alice, email=alice@example.com, age=25]
Class for DTOs:
1public class UserDTO {2 @NotBlank3 private String name;45 @Email6 private String email;78 private int age;910 // getters, setters, validation11 public String getName() { return name; }12 public void setName(String name) { this.name = name; }13}
Framework compatibility:
Performance considerations:
Best practice: