목표
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 매핑
연관관계 저장
참조로 연관관계 조회 - 객체 그래프 탐색
연관관계 수정
'JPA' 카테고리의 다른 글
JPA - 연관관계 매핑 기초(3) : 양방향 연관관계와 연관관계의 주인 (2) (0) | 2022.04.09 |
---|---|
JPA - 연관관계 매핑 기초(2) : 양방향 연관관계와 연관관계의 주인 (1) (0) | 2022.04.09 |
JPA - 기본 키 매핑 (0) | 2022.04.09 |
JPA - 필드와 컬럼 매핑 (0) | 2022.04.09 |
JPA - 객체와 테이블 매핑 feat. 데이터베이스 스키마 자동생성 (0) | 2022.04.08 |
댓글