본문 바로가기
Java

[Java] Lombok

by sgyeong 2024. 10. 28.

Lombok

 

어노테이션을 기반으로 코드를 자동완성 해주는 라이브러리

Lombok의 Getter, Setter, ToString 등 다양한 어노테이션을 사용하여 코드를 자동완성 할 수 있다.

 

장점

1. 어노테이션으로 코드를 자동완성하여 생산성, 편의성 향상.

2. 코드의 길이가 줄고 단순화 할 수 있어 가독성, 유지보수성 향상.

3. builder 패턴, log 생성 등 다양한 활용 가능.

 

 

lombok annotation

@Getter code 컴파일 시 getter 메서드 생성
@Setter code 컴파일 시 setter 메서드 생성
@ToString toString() 메서드 생성
@Data @Getter(모든 속성), @Setter(final X), @ToString,
@EqualsAndHashCode, @RequireArgsConstructor 이 
합쳐진 어노테이션
@EqualsAndHashCode 사용 객체에 대한 equals(), hashCode() 메서드 생성
@AllArgsConstructor 모든 필드를 파라미터(매개변수)로 갖는 생성자 생성
@NoArgsConstructor 파라미터(매개변수)가 없는 생성자 생성
@RequiredArgsConstructor final, @NonNull이 있는 필드를 포함하여 생성자 생성
@Builder 해당 클래스에 빌더 패턴을 사용할 수 있도록 함
@Log 로그 기능 사용
@Log4j, @Slf4J 로그 기능 사용
@SneakyThrows 메서드 선언부에 Throws를 정의하지 않고도 검사된 예외를 Throw 할 수 있음. 명시적인 예외처리 생략 가능 (신중하게 사용)
@Synchronized 메서드에서 동기화 설정
@NonNull 필드의 값이 null이 될 수 없음을 명시
@Value 불변 클래스 생성
모든 필드를 Private, Final로 설정

 

 

 

 

롬복 사용시 주의할 점

 

엔티티(Entity)에서 Lombok @Data는 권장되지 않는다.

1) equals / hashCode가 모든 필드 기반으로 생성된다. 그러므로 지연로딩(Lazy Loading) 문제 또는 프록시 비교 문제가 발생할 수 있다.

2) setter가 모든 필드에 생성된다.

JPA 에서 엔티티는 가급적 불변(또는 최소 setter)로 유지하는 것이 좋다.

setter는 객체 지향 프로그래밍의 캡슐화 원칙을 위반한다. 접근 제어자가 public으로 설정되어 있기 때문에 어디서든지 객체 내부로 직접 접근이 가능하기 때문이다. 따라서 객체의 일관성을 유지하기 위해 setter는 최소한으로 사용하는 것이 좋다.

3) toString()이 모든 필드를 포함한다.

양방향 연관관계가 있을 경우 무한루프 발생 위험이 있다. 또는 Hibernate 프록시 호출위험이 있다.

 

 

 

 

참고

https://ai-back-end.tistory.com/60

 

[Spring Boot] Entity에서의 올바른 롬복(Lombok) 사용에 있어서 나의 생각 정리

평소 롬복을 쓰면 코드가 확연히 줄게 되어 즐겨 사용한다.그러나 사실 그냥 엔티티에서는 @NoArgsConstructor, @Getter, @Builder 쓰고 Controller, service  등에서는@RequiredArgsConstructor를 많이 쓰니까 나도 따

ai-back-end.tistory.com

 

'Java' 카테고리의 다른 글

[Java] JVM (Java Virtual Machine)  (0) 2025.09.09
Java  (2) 2025.08.28
[Java] 논리연산자  (0) 2024.10.28
[Java] JDK 버전 여러 개 설치, 전환하여 사용하기  (0) 2024.05.14
[Java] 환경 변수 설정하기  (0) 2024.04.07