mappedBy
- 관계의 주인을 설정
- 단방향 매핑이여도 테이블은 연관관계를 갖는다.
- 양방향은 조회 로직이 추가된것.
- 양방향 매핑을 할 때 JPA에 주인이 아닌Entity에 mappedBy를 사용
- 아래 코드에 BOOK Entitiy에
@OneToMany(mappedBy = "book")
를 달아주었다.
- 연관관계의 주인이 아닌쪽에는 수정이 반영되지 않는다.
@Entity
@Getter
@NoArgsConstructor
public class Book {
@Id
@Column(name = "ISBN")
private String isbn;
@Column(name = "BOOK_NAME")
private String bookName;
@Column(name = "AUTHOR")
private String author;
@Column(name = "PUBLISHER")
private String publisher;
@Column(name = "KDC")
private String kdc;
@Column(name = "CATEGORYy")
private String category;
@Column(name = "KEYWORD")
private String keyword;
@Column(name = "BOOK_IMAGE")
private String img;
@OneToMany(mappedBy = "book")
private List<BookReview> bookReviewList = new ArrayList<>();
}
@Getter
@Entity
@NoArgsConstructor
public class BookReview {
@Id
@GeneratedValue
private long reviewNo;
private int rating;
private String reviewContents;
private LocalDateTime createDate;
private int declaration;
@Enumerated(EnumType.STRING)
private ReviewStatus reviewStatus;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "isbn")
private Book book;
}