도움되는 설정
@ManyToOne(fetch = FetchType.LAZY)
: 실무에서는 웬만하면 다 지연로딩으로 세팅. (지연로딩 - 멤버를 조회할 때는 멤버만 딱 조회)
@Setter
: 실무에선 가급적 Setter 사용 금지. 예제이며 단순화하기 위해 사용한것.
@NoArgsConstructor AccessLevel.PROTECTED
: 기본 생성자를 막고 싶은데, JPA 스펙상 PROTECTED로 열어두어야 함
@ToString
: 가급적 내부 필드(연관관계가 없는 필드)에만 사용
changeTeam()
으로 양방향 연관관계 한 번에 처리하기(연관관계 편의 메소드)
멤버와 팀은 양방향 연관관계, Member.team
이 연관관계의 주인, Team.members
는 연관관계의 주인이 아님.
따라서, Member.team
이 데이터베이스 외래키 값을 변경, 그 반대편은 읽기만 가능
의도한대로 잘 나옴