Java ORM 표준 JPA 프로그래밍 -김영한
객체와 참조테이블의 외래키 매핑
Entity 내에서 또다른 Entity 를 참조하려면 다음을 정해야 한다.
- 방향성
- 단방향: A클래스 → B클래스
- 양방향: A클래스 ↔ B클래스 (순환참조) , 이 경우에는 연관관계의 주인을 정해야된다.
- 관계대응수(cardinality)
- 1:1, 1:N, N:1, N:M :
@OneToMany
등 어노테이션으로 설정한다.
- 연관관계의 주인(owner) : 객체를 양방향 연관관계로 만들면, 연관관계의 주인을 설정해야 한다.
객체 연관관계 vs 테이블 연관관계
객체 연관관계 와 테이블의 연관관계 방식의 차이는 다음과 같다.
- 객체는 참조(주소로) 연관관계를 맺는다.
- 양방향 연관관계를 맺을려면 다음과 같이 서로 순환참조해야된다.
- A → B
- B → A
- 객체는 참조를 사용해 서로의 연관된 객체를 탐색할 수 있다. (객체 그래프 탐색가능)
- 테이블은 외래키 (FK) 로 연관관계를 맺는다.
- 테이블은 기본적으로 양방향 연관관계를 갖는다. A Join B , B Join A
- 테이블은 외래키를 사용해 연관관계를 탐색한다. (테이블 조인)
JPA 에서는 다음과 같이 Entity 사이의 관계를 매핑한다.