백엔드 개발 · 기초
JPA에서 엔티티 설계 시 @Setter 사용을 지양하는 이유와 대안은 무엇인가요?
힌트 · 객체의 일관성 유지와 비즈니스 메서드 사용을 생각해보세요.
불변성객체지향Side-Effect도메인_로직생성자
모범답안
JPA 엔티티 설계 시 @Setter를 지양하는 이유는 객체의 일관성을 해칠 수 있기 때문입니다. @Setter를 무분별하게 사용하면 객체의 상태를 예측하기 어려워지고, Side-Effect가 발생할 가능성이 높아집니다.
대안으로는 다음과 같은 방법들이 있습니다.
- 생성자를 통한 초기화: 객체 생성 시 필요한 값을 받아 불변성을 확보합니다.
- 비즈니스 로직 메서드 활용: 엔티티 내에서 상태를 변경하는 메서드를 직접 정의하여, 객체의 상태 변화를 제어하고 도메인 로직을 캡슐화합니다. 예를 들어,
order.cancel()메서드처럼 객체의 상태 변화를 명확하게 표현하는 것이죠. - 필요한 경우 제한적인 Setter 사용: 정말 필요한 경우에만, 그리고 그 이유를 명확히 설명할 수 있을 때만
@Setter를 사용합니다.
이러한 방법을 통해 객체지향적인 설계를 유지하고, 데이터의 일관성을 확보할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.