본문 바로가기
IT/Java

[Java] Record vs. Lombok – 무엇을 언제 써야 할까?

by eddie_factory 2025. 5. 31.
반응형

소개

Java에서 불변 객체(immutable object) 를 만들 때 흔히 사용하는 두 가지 방식이 있습니다.
바로 RecordLombok입니다.
둘 다 getter, toString, equals, hashCode, 생성자 등을 자동으로 생성해주지만 철학과 구현 방식, 사용 목적은 분명히 다릅니다.

이번 글에서는 Record와 Lombok의 차이를 명확히 정리하고, 실무에서 언제 어떤 것을 선택하면 좋은지에 대해 알아보겠습니다.

1. Java Record란?

record는 Java 14에 미리보기 기능으로 도입되었고,
Java 16부터 정식으로 지원되는 불변 데이터 클래스를 위한 문법입니다.

public record User(String name, int age) {}

위 한 줄로 다음과 같은 클래스를 생성할 수 있습니다:

  • 모든 필드를 파라미터로 받는 생성자
  • final 필드 + getter
  • toString, equals, hashCode 자동 생성
  • 컴파일 시점에 생성, 별도 의존성 없음

Record는 기본적으로 불변 객체이며, 상속이 불가능한 final 클래스입니다.

2. Lombok이란?

Lombok은 애너테이션을 사용하여 Java 코드의 반복적인 부분을 자동화하는 라이브러리입니다.
예를 들어 다음과 같이 작성할 수 있습니다:

@Getter
@AllArgsConstructor
@ToString
public class User {
    private final String name;
    private final int age;
}
  • @Getter: getter 자동 생성
  • @ToString, @EqualsAndHashCode: 자동 오버라이딩
  • @Builder, @Data, @Value 등 다양한 조합 가능

단점은 외부 라이브러리에 의존해야 하며,
IDE나 빌드 툴의 설정에 따라 인식 오류가 발생할 수 있다는 점입니다.

3. 기능 비교

항목 Record Lombok
목적 불변 데이터 객체 전용 코드 간소화 도구
Java 버전 Java 16 이상 필요 Java 8 이상에서 사용 가능
의존성 없음 별도 라이브러리 필요 (lombok.jar)
상속 불가 (final) 클래스 상속 가능
필드 수정 모든 필드 final final 또는 일반 필드 선택 가능
생성자 제어 불가 (자동 생성된 것만 사용) 직접 생성자 작성 또는 @Builder 활용 가능
IDE 호환성 우수 종종 문제 발생 (특히 Eclipse)

 

4. 언제 Record를 쓰면 좋을까?

  • 단순한 DTO, 응답 객체, 불변 모델 등
  • 순수하게 데이터를 전달하기 위한 목적
  • Java 16 이상을 사용하는 프로젝트
  • 별도의 setter, 커스텀 생성자, 상속이 필요 없는 경우

예시: API 응답용 DTO

public record MemberResponse(String name, int level) {}

 

 

5. 언제 Lombok을 쓰면 좋을까?

  • 다양한 생성자, builder 패턴, 유연한 클래스 설계가 필요한 경우
  • Java 8~11을 사용하는 프로젝트
  • 기존 레거시 코드에 점진적으로 적용할 때
  • 테스트 객체, Entity 등에서 커스터마이징이 필요한 경우

예시: 복잡한 모델과 빌더

@Builder
@Getter
@AllArgsConstructor
public class Order {
    private final Long id;
    private final String productName;
    private final int quantity;
}

 

 

 마무리

Record와 Lombok은 둘 다 불필요한 보일러플레이트 코드를 줄여주는 도구입니다.
Record는 불변 객체를 위한 공식 문법이며,
Lombok은 더 다양한 설계를 허용하는 코드 자동화 도구입니다.

상황 추천 방식
간단한 불변 DTO Record
Builder 패턴 필요 Lombok
Java 16 이상 Record 추천
Java 8~11 Lombok 유지

두 도구의 차이를 이해하고, 상황에 맞게 적절히 선택하는 것이 실무에서 가장 중요합니다.

반응형

댓글