본문 바로가기
JPA

JPA - 연관관계 매핑 기초(1) : 연관관계가 필요한 이유, 단방향 연관관계

by 왈레 2022. 4. 9.

목표

1. 객체와 테이블 연관관계의 차이를 이해

2. 객체의 참조와 테이블의 외래 키를 매핑 (@JoinColumn)

3. 용어 이해

• 방향(Direction): 단방향, 양방향

• 다중성(Multiplicity): 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M)

연관관계의 주인(Owner): 객체 양방향 연관관계는 관리 주인이 필요

 

연관관계가 필요한 이유

데이터베이스 테이블과 객체는 근본적으로 차이가 있다.

 

객체를 테이블에 맞추어 모델링 할 경우
(연관관계가 없는 객체)

 

 

객체의 참조 대신 외래키를 그대로 사용

 

 

외래 키 식별자를 직접 다룸

 

 

식별자로 다시 조회, 전혀 객체지향적인 방법이 아님

 

객체를 테이블에 맞추어 데이터 중심으로 모델링하면, 협력 관계를 만들 수 없다.

  • 테이블은 외래 키로 JOIN을 사용해서 연관된 테이블을 찾는다.
  • 객체는 참조를 사용해서 연관관계를 찾는다.
  • 테이블과 객체 사이에는 이런 근본적인 차이가 존재한다.

 

단방향 연관관계

단방향은 둘의 관계에서 한쪽에서만 다른 객체를 참조할 수 있는 형태이다.

 

객체지향 모델링
(객체 연관관계 사용)

 

 

객체의 참조와 테이블의 외래 키를 매핑

 

@JoinColumn

@JoinColumn 참조하는 객체의 FK를 매핑하는 것이다.

Member에서 Team 객체 참조한다면 테이블 관계에서 Member Team FK 가져야한다.

Team FK 당연히 무엇이겠는가? Team TEAM_ID 컬럼이다.

 

단방향 연관관계에서의 다중성 정의

Member과 Team객체의 단방향 연관관계에서 다중성 정의는 N쪽에만 하면된다.

Member Team 필드에 @ManyToOne 해주면 된다.

 

 

 

ORM 매핑

 

 

연관관계 저장

 

 

참조로 연관관계 조회 - 객체 그래프 탐색

 

 

연관관계 수정

댓글