- 연관관계가 필요한 이유를 이해한다.
- 단방향 연관관계를 이해한다.
- 양방향 연관관계를 이해한다.
- 아래와 같은 객체와 테이블이 있다.
하나의 Member는 하나의 Team에 소속될 수 있다.
- 이제 객체를 테이블에 맞추어 구현해보자.
- 위와 같이 구현할 경우 어떤 문제가 생길까?
한 member가 속한 team의 이름을 알고싶은 경우, 아래와 같이 구해야한다.
이는 전혀 객체지향스럽지 않음을 알 수 있다.
그렇다면 어떤 흐름이 객체 지향적일까? 아래 코드를 보자.
- 이러한 객체 지향적 흐름을 위해 필요한 것이 연관관계 매핑이다.
- 즉, 식별자 값을 통해 한 단계 한 단계 찾아가는 것이 아닌 직접적으로 연관되어 있음을 알려주는 것이다.
- 이제 객체를 객체지향스럽게 수정한 후, 아래와같이 연관관계를 매핑해보자.
자세한 매핑 방법은 JPA 다양한 연관관계 매핑에서 알아보고, 본 포스팅에서는 연관관계 이해에만 초점을 두자.- 아래는
Member : Team
이N : 1
관계임에 기반해 연관관계를 매핑한 모습이다.
이렇게 DB에 의존적으로 엔티티를 구현하는 것이 아닌, 객체답게 구현하였다.
- 그런데, Team에서 소속된 member의 List를 조회하고싶다면 어떻게 해야할까?
아래와같이 엔티티를 수정할 수 있다.
- 이로써 아래와같이 member의 List를 조회할 수 있다.
그렇다면, 양방향 연관관계를 맺은 두 엔티티 중에서 어떤 엔티티로 DB의 외래 키를 관리해야 하는걸까?
JPA 양방향 연관관계의 주인에서 알아보자.