Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Spring Boot
- 자바
- AOP
- Greedy
- 인프런
- JDBC
- 백준
- db
- transaction
- 스프링
- pointcut
- QueryDSL
- springdatajpa
- jpa
- Exception
- spring
- Thymeleaf
- 그리디
- Servlet
- java
- 스프링 핵심 기능
- kotlin
- JPQL
- SpringBoot
- 스프링 핵심 원리
- 김영한
- http
- Android
- Proxy
- 알고리즘
Archives
- Today
- Total
개발자되기 프로젝트
mappedBy() 본문
단방향 객체 관계 2개를 사용하여 양방향 관계 1개를 만들 경우 필요하다.
* 객체 연관관계
BookReviewInfo --> Book : 단방향, bookReviewInfo.get(book)
Book --> BookReviewInfo: 단방향, book.get(bookReviewInfo)
* 테이블 연관관계
BookReviewInfo<--> Book : 양방향
정확히는 객체에는 양방향 관계라는 것이 없다.
단지 서로 다른 2개의 단방향 관계를 잘 엮어서 양방향 인 것 처럼 보일 뿐.
하지만 데이터베이스 테이블은 FK하나로 양쪽에 조인이 가능.
즉 객체는 각 단방향 관계에서 별도로 FK를 사용하여 조인을 하지만!
데이터베이스 테이블은 하나의 FK로 양쪽에 조인을 한다는 것.
따라서 참조할 요소는 2개인데 FK는 하나인 상황이 발생한다.
그러면 어떤 FK를 사용해야 하냐구~~ 하나로 정해달라구!!
이 때 사용하는게 mappedBy()이고 이를 통해 연관관계 주인을 설정해 줘야한다.
여기서 주인이란 테이블에 FK가 있는 곳을 말한다.
BookReviewInfo --> Book의 경우 BookReviewInfo class가 관계의 주인이다.
말 그래도 FK가 BookReviewInfo에 있고,
의미적으로 봤을 경우에도 BookReviewInfo --> Book의 관계의 정의는 BookReviewInfo에서 정의되는 것 이 맞다.
따라서 BookReviewInfo가 주인이 된다.
코드로는 아래와 같다.
public class BookReviewInfo extends BaseEntity{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
//private long bookId;
@OneToOne(optional = false, mappedBy = "bookReviewInfo") //1:1 연관관계 맵핑
private Book book;
'JPA' 카테고리의 다른 글
1 : N 연관관계 - 1 (0) | 2021.06.21 |
---|---|
1:1 연관관계 - 2 (0) | 2021.06.20 |
1:1 연관관계 - 1 (0) | 2021.06.17 |
Entity Listener : 4(실제 사용하는 방법) (0) | 2021.06.16 |
Entity Listener : 3(@AuditingEntityListener) (0) | 2021.06.16 |
Comments