롬복(Lombok)

·2025년 8월 20일

SPRING

목록 보기
9/15
post-thumbnail

Lombok 정의

  • Lombok: 반복되는 코드를 줄여주는 자바 라이브러리
  • 자동 생성되는 코드: 생성자, getter/setter, toString, equals/hashCode 등
  • 사용처: DTO / VO / Entity 클래스에서 주로 활용

목적

- DTO (Data Transfer Object)

: 계층 간 데이터 전달 객체

- VO (Value Object)

: 값만 표현하는 객체 (읽기 전용, setter 없음)

- Entity

: 데이터베이스의 실제 테이블과 매핑되는 객체

👉 Lombok은 반복 코드 제거 + 가독성 향상 목적

주요 어노테이션

어노테이션설명예시 코드
@NoArgsConstructor기본(파라미터 없는) 생성자 생성new User()
@AllArgsConstructor모든 필드를 매개변수로 받는 생성자 생성new User("id","pw")
@RequiredArgsConstructorfinal 또는 @NonNull 필드만 매개변수로 받는 생성자의존성 주입 시 유용
@Getter모든 필드의 getter 메서드 자동 생성user.getId()
@Setter모든 필드의 setter 메서드 자동 생성user.setId("new")
@ToStringtoString() 자동 생성 (주소값 대신 필드 값 반환)System.out.println(user)
@EqualsAndHashCodeequals(), hashCode() 자동 생성컬렉션 비교/저장 시 유용
@Data@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor 종합 패키지가장 많이 씀
@Builder빌더 패턴 제공 → 객체 생성 시 가독성 ↑User.builder().id("id").pw("pw").build()

주의사항

  • Lombok은 컴파일 시점에 부가 코드를 만들어냄
    → build/generated 디렉토리에서 실제 생성된 코드 확인 가능
  • 자동 생성된 코드가 IDE에서 안 보일 뿐이지, 컴파일 후 클래스 파일에 포함됨
  • 무분별하게 @Setter 남발 시 객체 무결성 해칠 수 있음 → Entity에는 @Setter 지양하고 @Builder 추천
  • @Data는 편리하지만 Entity에서는 위험 (양방향 연관관계 + 무분별한 equals/hashCode 문제)

0개의 댓글