단방향 매핑에서 했던 코드를 떠올려 봅시다.
Member에서 Team으로 갈 수 있었습니다. 하지만 반대로 Team에서 Member로는 못 갔습니다.
하지만 레퍼런스만 넣어둔다면 Member와 Team은 왔다갔다 할 수 있습니다.
양쪽을 참조한 것을 바로 양방향 연관관계라고 합니다.
테이블 연관관계는 차이가 전혀 없습니다.
양방향 객체 연관관계를 해도 테이블이 전혀 변화가 없는 이유가 중요합니다.
예를 들어, MEMBER에서 소속된 TEAM을 알고 싶다면 TEAM_ID라는 외래키와 TEAM에 있는 TEAM_ID라는 기본키로 join하면 알 수 있습니다. 반대로 TEAM에서 어떤 MEMBER들이 소속되어있는지 알고 싶다면 PK와 FK를 join하면 됩니다.
여기서 중요한 부분은 테이블의 연관관계는 외래키 하나로 양방향이 다 있다는 것입니다.
사실상 테이블 연관관계는 방향이라는 개념이 없이 FK키를 집어넣으면 양쪽으로 서로의 연관을 알 수 있습니다.
문제는 객체입니다.
이전에 단방향 매핑을 기억해보면 Member에서 Team으로 갈 수 있었지만 Team에서 Member로 갈 수 없었습니다.
그래서 Team에다가 List members를 넣어줘야합니다.
즉, 테이블은 하나만 넣어도 되지만 객체는 둘 다 세팅을 해야한다는 차이가 있습니다.