⚠️ 이전 강의 스프링 데이터 JPA
와 동일한 예제 도메인 모델을 사용함.
@Setter
: 실무에서는 가급적 사용 금지@NoArgsConstructor AccessLevel.PROTECTED
: 기본 생성자를 막고 싶은데, JPA 스펙상 PROTECTED로 열어두어야 함@ToString
: 가급적 내부 필드만 두기(연관관계가 없는 필드만)changeTeam()
으로 양방향 연관관계를 한 번에 처리(연관관계 편의 메소드)Member와 Team은 양방향 연관관계이다.
Member.team
이 연관관계의 주인, Team.members
가 연관관계의 주인이 아니다.
따라서, Member.team
이 데이터베이스 외래키 값을 변경할 수 있고, 반대편은 오직 읽기만 가능하다.
(test는 가급적 순수 JPA로 동작을 확인)