스프링

[스프링] 빌더 패턴 @Builder

HHRR 2024. 1. 23. 18:21

1. 객체를 생성하는 방법

객체를 생성하는 방법에는 대표적으로 다음과 같은 3가지가 있다.

  1. 생성자 패턴
    User user = new User("유저1", "1234"); 
    userRepository.save(user);
  2. 자바빈즈 패턴 
    1. User user = new User(); user.setUserId("유저1"); user.setUserPassword("1234"); userRepository.save(user);
  3. 빌더 패턴
    User user = User.builder()
                    .userId("유저1")
                    .userPassword("1234")
                    .build();
    
        userRepository.save(user);

2. 빌더 패턴(Builder Pattern)이란?

빌더패턴은 객체를 생성하는 방법 중 하나이다.

객체를 정의하고 그 객체를 생성할 때 보통 생성자를 통해 생성하는 것을 생각하는데, 매개변수가 많아질수록 많은 조합과 생성자의 수가 많아진다는 등의 단점이 있다.

그래서 객체 생성할 수 있는 빌더를 builder() 함수를 통해 얻고, 거기에 세팅하고자하는 값을 세팅하여 .builder()를 작동시켜 객체를 생성한다.

장점

  1. 생성자 파라미터가 많을 경우에 가독성이 좋지 않은데, 빌더 패턴은 각 값들의 이름 함수로 셋팅되어 각각 무슨 값을 의미하는지 파악이 쉽다
  2. 순서가 상관없다

3. @Builder

따라서 이 어노테이션은 빌더패턴으로 객체를 생성할 수 있게 해주는 어노테이션이다.

setter가 없기 때문에 객체의 불변성을 보장하며 데이터의 일관성을 유지할 수 있다.

빌더패턴을 적용할 객체에 @Builder 어노테이션을 달면 객체를 생성할 수 있다.

@Builder
public class User{
  private String userPassword;
  private String userId;
}
User user = User.builder()
                .userId("유저1")
                .userPassword("1234")
                .build();

    userRepository.save(user);

 

 

출처

https://projectlombok.org/features/Builder

https://pamyferret.tistory.com/67