TIL

JPA 연관관계 매핑

가을맛 2024. 4. 27. 13:51

예제 시나리오
• 회원과 팀이 있다.
• 회원은 하나의 팀에만 소속될 수 있다.
• 회원과 팀은 다대일 관계다.

 

1. 테이블 간의 연관 관계 예시

→ Member 테이블이 Team테이블의 PK를 FK로 가지도록 한다.

 

2. Java 객체에서 이러한 연관관계를 어떻게 표현할 수 있을까?

(1) (비추천) Memebr 객체에 Team의 PK를 변수로 넣는다.

  • 가장 직관적인 방식으로, DB의 테이블 구조를 클래스로 그대로 표현한 것이다.
  • 단점 :
    • member 객체에서 team객체를 조회하려면 (jpa를 통해) teamId pk로 Team 객체를 조회해야 한다.
    • 해당 teamId를 갖는 team객체를 찾기 위해 영속성 컨텍스트, DB를 조회하는 과정이 필요 => 오래 걸린다. 
    • 또 조회 로직을 따로 짜주어야한다.

(2) (추천) Member 객체가 Team 객체를 참조한다.

  • 참조를 통해 member 객체에서 team객체 바로 볼 수 있음.
  • 조회 과정을 거치지 않기 때문에 빠르고, 간편하다.