Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
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
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

mappedBy() 본문

JPA

mappedBy()

Seung__ 2021. 6. 20. 14:26

단방향 객체 관계 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