본 내용은 인프런 김영한 강사님 JPA 기본 편 강의를 듣고 정리한 내용입니다.
https://www.inflearn.com/course/ORM-JPA-Basic
자바 ORM 표준 JPA 프로그래밍 - 기본편 강의 - 인프런
저는 야생형이 아니라 학자형인가봐요^^ 활용편 넘어갔다 30% 정도 듣고 도저히 답답해서 기본편을 들어버렸네요^^. 한주 한주 김영한님 강의 들으니 렙업되는 모습을 스스로 느낍니다. 특히 실
www.inflearn.com
양방향 연관관계
양쪽으로 서로 호출할 수 있는 것을 말한다.
테이블의 관점에서 양뱡향연관관계에서 방향이란 게 존재하지 않는다 -> pk와 fk를 조인하면 알 수 있기 때문이다.
객체지향의 관점에서는 문제가 생긴다.(외래키가 없는 엔티티의 경우 호출하기 쉽지 않다)
객체지향의 관점에서 문제의 해결법
mappedBy를 이용(매우 매우 처음에 이해하기 어렵다.. C의 포인터 같은 존재..)

위처럼 Fk가 없는 엔티티에 mappedBy를 이용해서 Team 테이블이 Member 테이블과 연관관계가 있다는 것을 알려준다.


mappedBy는 위에서 언급했던 것처럼 처음에 이해하기 어렵고, 어떻게 언제 쓸지에 대해 외워서 쓸 수도 없다.
결론 => 객체와 테이블 간의 연관관계를 맺는 차이를 이해해야 한다.
사실 객체에서의 양방향 관계는 서로 다른 단방향 관계 2개이다.
테이블 입장에서는 fk로 모두 조회가 가능해서 양방향 관계이다.
그래서 객체를 양방향으로 참조하려면 단방향 연관관계를 2개 있어야 한다!!
이때 주의해야 할 점은 두 개의 객체 중에서 주인을 정해야 한다.
주인이 외래 키를 등록, 수정해야 하고 주인이 아닌 쪽(mappedBy 사용)은 읽기만 가능하다.
양방향 연관관계 매핑에서 외래키가 있는 곳이 주인이다. ( 외래키는 보통 多 쪽에 있어야 한다 ex_ Member와 Team의 관계에서는 하나의 Team에 여러 명의 Member 가 들어갈 수 있으니까 Member 가 多이다. 외래키를 Member에 두고 Member가 주인이다.)
또한 많이 하는 실수 중에 주인 쪽 값을 넣지 않는 경우가 있는데 항상 주인 쪽의 값을 입력을 해야 한다
'JAVA & SPRING > JPA' 카테고리의 다른 글
| JPA0 기본편(다양한 연관관계 매핑2, 일대일 & 다대다) (0) | 2024.03.13 |
|---|---|
| JPA0 기본편(다양한 연관관계 매핑1, 다대일 & 일대다) (0) | 2024.03.11 |
| JPA0 기본편(값 타입 컬렉션) (0) | 2024.03.04 |
| JPA0 기본편(값 타입과 불변 객체, 값 타입 컬렉션) (0) | 2024.03.04 |
| JPA 기본편0(값 타입 {기본값 타입, 임베디드 타입}) (0) | 2024.03.04 |