@Builder로 객체를 안전하게 생성하기
Lombok은 수많은 어노테이션을 지원한다. Builder 어노테이션을 이용해서 엔티티 객체를 Builder 패턴으로 생성해준다. 이 패턴을 알아보고 안전하게 객체를 생성하는 방법을 소개한다.
Builder 패턴의 장점은 다음과 같다.
- 다양한 빌더를 구현하여 다양한 종류의 유연성 있는 객체 생성 가능
- 빌더를 사용하여 객체를 생성하면 코드의 가독성이 향상
예시) Member 엔티티를 @Builder로 생성
@Builder
@Entity
@Getter
public class Member{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String email;
private String password;
}
@Builder.Default 란?
예시부터 들어보겠다. 아래의 코드에서 만약 생성자로 생성한다면 reviewImages는 arraylist로 초기화되어 있을 것이다. 하지만 builder 패턴으로 생성하면서 reviewImages를 초기화 해주지 않으면 Null이 된다. 이럴 때 @Builder.Default 어노테이션을 붙여주면 builder 패턴으로 생성시에도 arraylist로 초기화 된다.
실제로 엔티티 설계당시에는 몰랐으나 개발이 진행되며 오류가 나서 알게 된 부분이었다. 빌더 패턴을 사용할 때 꼭 알아두자!
@Builder
@Entity
@Getter
public class Review {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@Builder.Default
private List<ReviewImage> reviewImages = new ArrayList<>();
}
'💻dev > 🌱Java+Spring' 카테고리의 다른 글
Spring Security | Spring Security의 구조를 이해해보자! (0) | 2023.08.10 |
---|---|
Spring | @Builder, @NoArgsConstructor 그리고 푸른 수염의 @AllArgsConstructor (0) | 2023.08.09 |
Java | 엔티티를 조회하는 가장 안전한 방법, Optional (0) | 2023.08.01 |
Querydsl | 동적 쿼리와 성능 최적화 조회 - Builder, Where절 파라미터 (0) | 2023.05.17 |
Querydsl | 수정, 삭제 벌크 연산하기 (0) | 2023.05.16 |