지우쓰 개발일기
[JPA] 연관관계 Mapping (1) 본문
본 포스팅은 자바 ORM 표준 JPA 프로그래밍 (김영한 저)을 읽고 정리한 내용입니다.
자바 ORM 표준 JPA 프로그래밍
에이콘 오픈 소스 프로그래밍 시리즈. 이 책은 JPA 기초 이론과 핵심 원리, 그리고 실무에 필요한 성능 최적화 방법까지 JPA에 대한 모든 것을 다룬다.
www.aladin.co.kr
연관관계 Mapping
객체의 참조와 테이블의 FK를 매핑
-
방향(Direction)
-
객체관계: [단방향, 양방향]
-
테이블관계: 양방향
-
-
다중성(Multiplicity)
-
[다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:N)]
-
-
연관관계의 주인(Owner)
-
양방향 연관관계인 경우 주인을 정해야 함
-
-
객체와 테이블 연관관계의 차이
객체 연관관계 | 테이블 연관관계 |
서로 다른 단방향 관계 2개 | 양방향 관계 |
참조 | FK |
객체 그래프 탐색 | JOIN |
N:1 단방향 연관관계
@JoinColumn
FK 매핑
속성 | 기능 | 기본값 |
name | 매핑할 FK 이름 | 필드명 + _ + 참조하는 테이블의 PK |
referencedColumnName | FK가 참조하는 대상 테이블의 컬럼명 | 참조하는 테이블의 PK 컬럼명 |
@ManyToOne
N:1
속성 | 기능 | 기본값 |
optional | false이면 연관 엔티티가 항상 있어야 함 | true |
fetch | global fetch 전략 설정 | @ManyToOne=FetchType.EAGER @ManyToOne=FetchType.LAZY |
cascade | 영속전 전이 기능 사용 |
양방향 연관관계
단방향 매핑만으로 테이블과 객체 간 매핑은 완료되었지만,
객체 그래프 탐색 기능을 위해 양방향 매핑을 추가할 수 있다.
@OneToMany
1:N
-
mappedBy
-
양방향 관계일 때 테이블의 FK를 관리할 관계(Owner) 지정
-
Owner가 아닌 쪽에 Owner(필드 이름)을 지정하면 자동으로 매핑됨
- Owner만 FK 값을 변경할 수 있고, 아닌 쪽은 객체 그래프 탐색만 가능
-
구현 시 주의사항
-
객체를 고려해서 Owner와 Onwer가 아닌 쪽 모두 값을 입력해야 함
-
객체를 add 하는 것 뿐만 아니라 기존 관계를 제거하는 등, 로직을 견고하게 작성해야 함
'Spring Boot > JPA' 카테고리의 다른 글
[JPA] 상속관계 Mapping (0) | 2020.09.13 |
---|---|
[JPA] 연관관계 Mapping (2) (0) | 2020.09.12 |
[JPA] Persistence Context (0) | 2020.09.09 |
[JPA] JPQL 개요 (0) | 2020.09.09 |
[JPA] CRUD 기본 (0) | 2020.09.09 |
Comments