Builder Pattern은 객체 생성 패턴(Creational Design Pattern) 중 하나로, 객체의 생성 과정을 세밀하게 제어하면서 복잡한 객체를 단계적으로 생성할 수 있게 해주는 디자인 패턴
이는 특히 생성할 객체의 속성이 많거나, 생성 과정에서의 변형이 필요한 경우 유용
기존 코드를 다음과 같이 사용중이였다
@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LoginHistory {
@Id
@Column(name = "id", length = 36)
private Long id;
@Column(name = "login_ip", nullable = false)
private String loginIp;
}
@NoArgsConstructor(access = AccessLevel.PROTECTED)
LoginHistory loginHistory = new LoginHistory();
//NoArgsConstructor(access = AccessLevel.PROTECTED) 사용시 다음과 같이 오류 발생
//'LoginHistory()' has protected access in 'com.test.project.domain.LoginHistory'
@AllArgsConstructor 삭제
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class LoginHistory {
@Id
@Column(name = "id", length = 36)
private Long id;
@Column(name = "login_ip", nullable = false)
private String loginIp;
@Builder
public LoginHistory(Long id, String loginIp){
this.id = id;
this.loginIp = loginIp;
}
}
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class LoginHistory {
@Id
@Column(name = "id", length = 36)
private Long id;
@ToString.Exclude
@OneToMany(mappedBy = "member", cascade = CascadeType.ALL)
@Column(name = "member_id", nullable = false)
private Member member;
@Builder
public LoginHistory(Long id){
this.id = id;
}
}