결론부터 말하자면
설계시에는 단방향 매핑으로 !!
============================
Member >> N
Team >> 1
Member -> Team으로 접근
-> 단방향 1개
Team -> Member로 접근
-> 단방향 1개
(( 총 2개의 방향 ))
N:1 중 N이 무조건 연관관계의 주인
Member.java
@ManyToOne
@JoinColumn(name="TEAM_ID")
private Team team;
Team.java
@OneToMany(mappedBy= "team")
private List<Member> members = new ArrayList<Member>();
두개를 매핑만 시켜주는 것 말고,, 실제로 접근을 해야하겠지 ?
필자는 보통 주인 쪽에 양방향 매핑을 할 메서드를 작성해준다.
Member.java
public void changeTeam(Team team) {
this.team = team;
team.getMembers().add(this);
}
해당 방법으로만 하면 양방향 접근이 끝난다.
하지만 설계시에는 무조건 단방향으로 설계 한 후 ! 필요할 경우에 양방향으로 변경하자.
1:N > 양방향 연관관계로 매핑
M:N > 최대한 사용 금지 !! - ManyToOne, OneToMany로 변경