Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용
Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용
이 글, Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용은 반복되는 접근자와 생성자 코드를 줄여 더 깔끔한 DTO/Entity 설계를 돕기 위해 작성되었습니다. Lombok 라이브러리를 적용하면 소스가 간결해지고 유지보수가 쉬워집니다. 실무에서 바로 쓸 수 있는 설정과 주의사항을 중심으로 정리합니다.
1. Lombok 설치 및 설정
Maven 기반 프로젝트에서는 pom.xml에 Lombok을 의존성으로 추가해야 합니다. 아래 예시는 표준 설정이며, 프로젝트에 맞는 버전으로 변경해 사용하세요.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
또한 IDE(예: IntelliJ IDEA, Eclipse)에 Lombok 플러그인을 설치해야 어노테이션 기반 자동완성 및 컴파일 오류를 예방할 수 있습니다. 빌드 도구와 IDE 설정이 일치하는지 확인하세요.
2. Lombok 주요 애노테이션
@Getter: 각 필드에 대한 읽기 접근자(getter)를 자동으로 생성합니다.@Setter: 필요한 필드에 쓰기 접근자(setter)를 추가합니다.@AllArgsConstructor: 모든 필드를 매개변수로 받는 생성자를 생성합니다.@NoArgsConstructor: 파라미터 없는 기본 생성자를 생성합니다. JPA 엔티티에 필수입니다.@Builder: 빌더 패턴을 적용해 가독성 높은 객체 생성을 지원합니다.@Data: Getter/Setter와 함께toString,equals,hashCode까지 묶어 제공합니다.
3. DTO 클래스 예제
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UserDTO {
private String username;
private String email;
private int age;
}
// 사용 예제
UserDTO user = UserDTO.builder()
.username("johndoe")
.email("johndoe@example.com")
.age(30)
.build();
System.out.println(user.getEmail()); // johndoe@example.com
4. Entity 클래스 예제 (JPA)
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.Builder;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class UserEntity {
@Id
private Long id;
private String username;
private String email;
private int age;
}
// Builder를 활용한 Entity 생성
UserEntity userEntity = UserEntity.builder()
.id(1L)
.username("alice")
.email("alice@example.com")
.age(25)
.build();
5. 실무 활용 팁
- DTO와 Entity에 Lombok을 적용하면 중복 코드가 크게 줄어듭니다. 가독성이 향상되고 리뷰도 수월해집니다.
- @Builder는 테스트용 데이터 생성이나 복잡한 생성자 호출을 단순화합니다. 단, 불변성을 유지할 필요가 있으면 설계를 검토하세요.
- 간단한 데이터 홀더에는
@Data가 유용하지만, equals/hashCode 구현 방식이나 직렬화 요구 사항을 고려해 선택하세요. - JPA Entity에는 기본 생성자(
@NoArgsConstructor)가 필요합니다. 프록시 및 리플렉션을 고려해 접근 제어자를 확인하세요.
함께 보면 좋은 엔터프라이즈 사례
🚀 이 주제, 우리 서비스에 어떻게 적용할까요?
Java Lombok 실무 가이드: DTO/Entity 적용과 @Builder 활용를 실제 서비스와 조직에 녹여보고 싶다면, 현재 아키텍처와 운영 방식을 한 번 점검해 보는 것부터 시작해 보세요. 팀 위키나 기술 블로그, 사내 스터디 주제로도 아주 좋습니다.
이 글이 도움이 됐다면, 비슷한 엔터프라이즈 사례 글들도 함께 살펴보면서 우리 조직에 맞는 운영 상용구를 정의해 보세요.
댓글
댓글 쓰기