인프런 커뮤니티 질문&답변

피레스님의 프로필 이미지
피레스

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

연관관계 편의 메서드 위치에 관련한 질문입니다.

해결된 질문

작성

·

736

7

다대일 관계에서 다쪽에 편의 메서드가 존재하는 경우

아래처럼 setter없이 =연산자와 add메서드를 통해 설정이 가능합니다.

public class Member{
  
  private Team team;
  
  public void setTeam(Team team) {
    this.team = team;
    team.getMembers().add(this);
  }
  // ...
}

그런데 일쪽에 편의 메서드가 사용되면

public void addOrderItem(OrderItem orderItem) {
orderItems.add(orderItem);
orderItem.setOrder(this);
}

이런식으로 setter를 사용할 수밖에 없습니다. (물론 위에 set팀도 setter메서드를 정의한 것이긴 하지만)

제가 이런 질문을 하는 이유는

영한님께서 강의마다 하시는 말씀중에 setter은 가능하면 열어두지 말고 따로 비즈니스 로직을 위한 메서드를 정의해서 사용하는 것이 좋다고 하셨기 때문입니다.

하지만 연관관계 편의 메서드를 위해서는 setter가 필수불가결해보이는데, 이렇게 부분적으로 열어두는 경우는 괜찮은 것인지요?

답변 1

7

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 피레스님

데이터를 꼭 변경해야 할 필요가 있는 경우에는 부분적으로 setter를 열어두어도 괜찮습니다^^

제가 주의하라고 하는 점은 무분별하게 setter를 열어두는 부분입니다.

감사합니다.

피레스님의 프로필 이미지
피레스

작성한 질문수

질문하기