목차
- JPA 연관 관계 - 고아 객체
- JPA 연관 관계 - 즉시로딩과 지연로딩
- JPA 연관 관계 - 프록시 객체
- JPA 연관 관계 - @MappedSuperclass
- JPA 연관 관계 - 상속 관계 Mapping
- JPA 연관 관계 - 영속성 전이 Cascade
- JPA 연관 관계 - 양방향 연관관계와 연관과계의 주인
- JPA 연관 관계 - 양방향 연관관계
- JPA 연관 관계 - 객체 지향 스럽게 모델링 하기
- JPA 연관 관계 - 객체 관계 모델링하기
- JPA 연관 관계
JPA 연관 관계
테이블과 객체 간 패러타임 차이로 인해 생기는 문제가 있다. 그 중 대표적인게 테이블 연관관계 를 객체로 풀어내는 것
테이블간의 연관관계를 객체 연관관계로 풀어내기 위해서는 아래 3가지 조건을 잘 이해해야 한다.
- 방향
- 테이블 연관관계는 양방향
- 객체의 연관관계는 단방향으로만 존재한다.
- 객체의 양방향 관계는 단방향 관계 2개를 이용해 만들어준다.
- 다중성
- One To One(일대일) 1:1
- One To Many(일대다) 1:N
- Many To One(다대일) N:1
- Many To Many(다대다) N:M
- 연관관계의 주인
- 테이블 연관관계를 객체 양방향 연관관계로 만들기 위해서는 연관관계 주인 을 정해야 한다.
- 객체의 두 관계중 하나를 연관관계의 주인으로 지정해 주인만이 외래 키 를 관리하게 한다.
- 연관관계 주인은 외래키를 이용해 (등록, 수정) 등이 가능하지만 주인이 아닌 쪽은 읽기 만 가능하다
JoinColumn 어노테이션
외래키 를 매핑할 때 사용하는 어노테이션
속성 | 기능 | 기본 값 |
---|---|---|
name | 매필할 외래키 이름을 명시한다. | 필드명 + _ + 참조하는 테이블 기본키 컬럼명 |
referencedColumnName | 외래 키가 참조하는 대상 테이블 컬럼명 | 참조하는 테이블의 기본키 컬럼명 |
foreignKey | 외래키 제약 조건을 직접 지정할 수 있다. | |
unique, nullable, insertable, updatable, columnDefinition, table |
@Column 속성과 같다. |
ManyToOne 어노테이션
N:1 관계를 Mapping 하기 위한 어노테이션
속성 | 기능 | 기본 값 |
---|---|---|
optional | true 는 해당 객체에 null 값이 들어갈 수 있다는 의미, false 는 해당 객체가 항상 있어야 함을 의미한다. |
기본값은 true |
fetch | Fetch 전략을 설정한다. | @ManyToOne(fetch = FetchType.EAGER) |
cascade | ||
targetEntity | 연관된 엔티티의 타입 정보를 설정한다. |
OneToMany 어노테이션
1:N 관계를 Mapping 하기 위한 어노테이션
속성 | 기능 | 기본 값 |
---|---|---|
mappedBy | 양방향 연관관계 mapping 시 연관관계 주인인 Entity 필드를 명시한다 | |
fetch | Fetch 전략을 설정한다. | @OneToMany(fetch = FetchType.LAZY) |
cascade | ||
targetEntity | 연관된 엔티티의 타입 정보를 설정한다. | |
orphanRemoval |