OneToMany

sixhustle·2022년 2월 14일
0

JPA

목록 보기
1/2

book, bookStore 양방향 관계에서 주의사항


잘못된 코드

  • book, bookStore가 연결이 안된다.
  • book.bookStoreId : null로 설정된다.
class BookStore {
   @OneToMany(mappedBy = "bookStore")
   private Set<Book> books = new HashSet<>();
   
   public void add(Book book) {
      this.books.add(book);
   }
}

class Book {
   @ManyToOne
   private BookStore bookStore;
}

개선된 코드

class BookStore {
   @OneToMany
   private Set<Book> books = new HashSet<>();
   
   public void add(Book book) {
      book.setBookStore(this); // 관계의 주인에서 관계를 설정한다.
      getBooks().add(book); // 객체지향 코드를 위해 추가해주는 것이 맞다.
   }
}

class Book {
   @ManyToOne
   private BookStore bookStore;
}
  • 단방향 관계
    • 다른 속성 없이, @OneToMany, @ManyToOne 선언한 경우다.
    • 양방향 관계와 schema가 다르다.
    • @OneToMany의 경우, JoinTable이 생긴다.
  • 양방향 관계
    • JoinTable없이 Many쪽에서 foreignKey를 가지게 된다.
      • schema에 book.bookStoreId가 생성된다.
    • @OneToMany(mappedBy = "bookStore")
      • 관계의 주인을 나타낸다.
      • Many쪽을 주인으로 설정한다.
      • 주인 쪽에서 관계를 설정해야 한다. 그래야 데이터베이스에 반영이 된다.

Reference

0개의 댓글