JPA 연관관계 매핑 기초

김두현·2023년 4월 25일
1

JPA

목록 보기
6/14
post-thumbnail

Goal

  • 연관관계가 필요한 이유를 이해한다.
  • 단방향 연관관계를 이해한다.
  • 양방향 연관관계를 이해한다.

연관관계가 필요한 이유

  • 아래와 같은 객체와 테이블이 있다.
    하나의 Member는 하나의 Team에 소속될 수 있다.

  • 이제 객체를 테이블에 맞추어 구현해보자.
  • 위와 같이 구현할 경우 어떤 문제가 생길까?
    한 member가 속한 team의 이름을 알고싶은 경우, 아래와 같이 구해야한다.
    이는 전혀 객체지향스럽지 않음을 알 수 있다.
    그렇다면 어떤 흐름이 객체 지향적일까? 아래 코드를 보자.
  • 이러한 객체 지향적 흐름을 위해 필요한 것이 연관관계 매핑이다.
    • 즉, 식별자 값을 통해 한 단계 한 단계 찾아가는 것이 아닌 직접적으로 연관되어 있음을 알려주는 것이다.

단방향 연관관계

  • 이제 객체를 객체지향스럽게 수정한 후, 아래와같이 연관관계를 매핑해보자.

    자세한 매핑 방법은 JPA 다양한 연관관계 매핑에서 알아보고, 본 포스팅에서는 연관관계 이해에만 초점을 두자.
  • 아래는 Member : TeamN : 1 관계임에 기반해 연관관계를 매핑한 모습이다.

    이렇게 DB에 의존적으로 엔티티를 구현하는 것이 아닌, 객체답게 구현하였다.

양방향 연관관계

  • 그런데, Team에서 소속된 member의 List를 조회하고싶다면 어떻게 해야할까?
    아래와같이 엔티티를 수정할 수 있다.
  • 이로써 아래와같이 member의 List를 조회할 수 있다.

그렇다면, 양방향 연관관계를 맺은 두 엔티티 중에서 어떤 엔티티로 DB의 외래 키를 관리해야 하는걸까?
JPA 양방향 연관관계의 주인에서 알아보자.


참고 자료

https://www.inflearn.com/course/ORM-JPA-Basic


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글