레퍼런스 코드 원본
사용 목적
Patch 엔티티에 null 값이 들어왔는지 일일히 필드 별로 확인하기 귀찮기 때문에 CustomBeanUtils
를 사용했다. 하지만 엔티티에 Setter
를 사용한다는 점이 거슬린다.
해결 방법
애초에 값이 null으로 들어왔는지 체크할 필요가 없도록 입력값에 필수를 두어 제한한다. 그리고 해당 입력값들에 대해서만 값 변경을 수행하면 된다.
사용자로부터 PatchDto를 전달 받을 때, 서비스 단에서 PatchDto에 null 필드가 있는지 확인할 필요가 없도록.
애초에 불변 객체처럼 사용한다면 Setter 사용을 줄일 수 있다.
정적팩토리메서드, 빌더패턴을 사용할 땐 생성자를 private 처리한다.
기본생성자 접근자를 protected로 변경해 외부에서의 new 연산자 사용을 막을 수 있어 객체의 일관성을 유지할 수 있다.
@NoArgsConstructor(access = AccessLevel.PROTECTED)
으로 간단히 설정할 수 있다.