Builder 를 사용하는 이유
Builder 패턴
인스턴스를 생성하고나서, 생성자로 생성하면 가독성이 떨어집니다, 인자 순서를 신경쓰지않아도 됩니다, 불필요한 생성자 만들지않습니다.
안쓸 시에 불편한 점
1. 오버로딩으로 사용할 만한 경우마다 생성자를 생성한다.
2. 하나의 생성자에서 파라미터를 그냥 null 로 넘긴다.
예제
User.java
@NoArgsConstructor
@Getter
@Entity
public class User {
@Id
@Column(name = "user_no")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userId;
private String name;
private String email;
@Builder
public User(String userId, String name, String email) {
this.userId = userId;
this.name = name;
this.email = email;
}
}
UserRepositoryTest.java
@Test
public void 사용자입력_테스트() {
// given
User user = userRepository.save(User.builder()
.name("이어진")
.email("eojin312@naver.com")
.loginId(LOGIN_ID)
.loginPassword("1234")
.profileImage("a.jpg")
.birthYear(2002)
.gender("M")
.build()
);
// when
User newUser = userRepository.findByLoginId(LOGIN_ID);
// then
Assertions.assertEquals(LOGIN_ID, newUser.getLoginId());
}