inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

해결된 질문

863

피레스

작성한 질문수 3

8

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

아래처럼 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가 필수불가결해보이는데, 이렇게 부분적으로 열어두는 경우는 괜찮은 것인지요?

JPA java

답변 1

11

김영한

안녕하세요. 피레스님

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

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

감사합니다.

실무 조언 관련 질문입니다.

0

39

1

H2데이터베이스 파일 생성

0

48

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

49

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

46

1

JPQL 메소드와 락

0

49

1

Delivery @OneToOne

0

55

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

85

2

UnsupportedOperationException 발생

0

80

3

H2 Database 연결이 안됩니다.

0

87

2

연관관계 매핑 질문드립니다.

0

79

2

h2데이터베이스 실행오류

0

103

2

persistence.xml

0

101

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

76

1

영속성 컨텍스트

0

61

1

JPA 프록시

0

87

1

Native Query와 MyBatis

0

62

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

81

1

임베디드 타입 예시 코드 관련 질문

0

110

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

89

3

인텔리제이 패키지 커서 단축키 질문

0

104

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

134

1

양방향 연관관계 시 연관관계 주인을 설정하는 이유

0

67

1

임베디드 타입과 MappedSuperClass의 차이점이 궁금합니다.

0

95

1

데이터베이스가 초기화되는 것 같아요

1

173

2