양방향 매핑

단방향 매핑에서 했던 코드를 떠올려 봅시다.

Member에서 Team으로 갈 수 있었습니다. 하지만 반대로 Team에서 Member로는 못 갔습니다.

하지만 레퍼런스만 넣어둔다면 Member와 Team은 왔다갔다 할 수 있습니다.

양쪽을 참조한 것을 바로 양방향 연관관계라고 합니다.

Untitled

테이블 연관관계는 차이가 전혀 없습니다.

양방향 객체 연관관계를 해도 테이블이 전혀 변화가 없는 이유가 중요합니다.

예를 들어, MEMBER에서 소속된 TEAM을 알고 싶다면 TEAM_ID라는 외래키와 TEAM에 있는 TEAM_ID라는 기본키로 join하면 알 수 있습니다. 반대로 TEAM에서 어떤 MEMBER들이 소속되어있는지 알고 싶다면 PK와 FK를 join하면 됩니다.

여기서 중요한 부분은 테이블의 연관관계는 외래키 하나로 양방향이 다 있다는 것입니다.

사실상 테이블 연관관계는 방향이라는 개념이 없이 FK키를 집어넣으면 양쪽으로 서로의 연관을 알 수 있습니다.

문제는 객체입니다.

이전에 단방향 매핑을 기억해보면 Member에서 Team으로 갈 수 있었지만 Team에서 Member로 갈 수 없었습니다.

그래서 Team에다가 List members를 넣어줘야합니다.

Untitled

즉, 테이블은 하나만 넣어도 되지만 객체는 둘 다 세팅을 해야한다는 차이가 있습니다.