해당 내용은 인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본 편에서 공부한 내용을 정리한 것입니다.
자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 | 김영한 - 인프런
김영한 | JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., 실무에서도
www.inflearn.com
연관관계의 주인과 mappedBy
- mappedBy = JPA의 멘탈붕괴 난이도
- mappedBy는 처음에는 이해하기 어렵다.
- 객체와 테이블간에 연관관계를 맺는 차이를 이해해야 한다.
- 차이점
- 객체 연관관계 = 2개
- 회원 -> 팀 연관관계 1개 (단방향)
- 팀 -> 회원 연관관계 1개 (단방향)
- 테이블 연관관계 = 1개
- 회원 <-> 팀의 연관 관계 1개 (양방향)
- 객체 연관관계 = 2개
- 차이점
- 객체의 양방향 관계
- 객체의 양방향 관계는 사실 양방향 관계가 아니라 서로 다른 단방향 관계 2개다.
- 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 만들어야 한다.
- 테이블의 양방향 연관관계
- 테이블은 외래 키 하나로 두 테이블의 연관 관계를 관리한다.
- Ex) member.team_id 외래 키 하나로 양방향 연관관계 가짐 (양쪽으로 조인할 수 있다.)
연관관계의 주인(OWNER)
- 양방향 매핑 규칙
- 객체의 두 관계중 하나를 연관관계의 주인으로 지정
- 연관 관계의 주인만이 외래 키를 관리(등록,수정)
- 주인이 아닌쪽은 읽기만 가능
- 주인은 mappedBy 속성 사용 X
- 주인이 아니면 mappedBy 속성으로 주인 지정
- Q.누구를 주인으로?
A. 외래 키가 있는 곳을 주인으로 정해라
- 양방향 매핑 시 연관관계의 주인에 값을 입력해야 한다.
(순수한 객체 관계를 고려하면 항상 양쪽 다 값을 입력해야 한다.)
- 양방향 연관관계 - 주의할 점
- 순수 객체 상태를 고려해서 항상 양쪽에 값을 설정하자.
- 연관 관계 편의 메소드를 생성하자
- 양방향 매핑시에 무한 루프를 조심하자
- ex) toString(), lombok , JSON 생성 라이브러리
- ex) toString(), lombok , JSON 생성 라이브러리
- 양방향 매핑 정리
- 단방향 매핑만으로도 이미 연관 관계 매핑은 완료
- 양방향 매핑은 반대 방향으로 조회(객체 그래프 탐색) 기능이 추가된 것 뿐
- JPQL에서 역방향으로 탐색할 일이 많음
- 단방향 매핑을 잘 하고 양방향은 필요 할 때 추가해도 됨 (테이블에 영향을 주지 않음)
'JPA' 카테고리의 다른 글
[JPA] JPA - 다양한 연관관계 매 (0) | 2024.10.20 |
---|---|
[JPA] JPA - 엔티티 매핑 (0) | 2021.08.01 |
[JPA] JPA - 영속성 관리 (0) | 2021.07.29 |