Java
java Record
by curious week
2025. 4. 4.
.
record "불변 객체 + 자동 코드 생성"
Java/Spring에서 record와 유사한 것들
|
|
|
Lombok @Data / @Value 클래스 |
getter/setter/toString 등 자동 생성 |
불변은 @Value, 가변은 @Data, 별도 의존성 필요 |
Java Bean (POJO) |
수동으로 getter/setter 생성 |
코드 양 많고, 불변 객체 아님 |
DTO 클래스 (전통 방식) |
controller ↔ service 사이 데이터 전달용 |
가변 객체, 코드 반복 많음 |
Value Object 패턴 |
equals/hashCode 기반 값 비교용 클래스 |
record가 VO 구현에 딱 적합함 |
Sealed Class (Java 17+) |
상속을 제한한 클래스 계층 |
record는 값 자체 표현, sealed는 계층 구조 |
record vs Lombok 비교
// record
public record User(String name, int age) {}
// Lombok
@Data
@AllArgsConstructor
public class User {
private final String name;
private final int age;
}
불변 데이터 전송 객체 (DTO) |
✅ record |
복잡한 가변 객체 |
✅ Lombok + class |
상속 구조가 필요한 객체 |
❌ record → class/abstract 사용 |
Java 14 이하 |
❌ record 사용 불가 → Lombok 추천 |