[java] Hibernate에서 다대다(Many-to-Many) 연관 관계 설정하는 방법은?

Hibernate는 Java 객체와 데이터베이스 사이의 매핑을 쉽게 할 수 있는 ORM(Object-Relational Mapping) 도구입니다. 다대다(Many-to-Many) 관계는 한 객체가 여러 개의 다른 객체와 연결되어 있는 경우에 사용됩니다. Hibernate에서 Many-to-Many 연관 관계를 설정하기 위해 다음 단계를 따를 수 있습니다.

  1. 주요 객체 클래스(예: Book 클래스)를 생성합니다.
@Entity
public class Book {
    @Id
    private Long id;
    private String title;
    // ...
}
  1. 다른 객체의 클래스(예: Author 클래스)를 생성하고 Many-to-Many 관계로 설정합니다. 이를 위해 @ManyToMany 어노테이션을 사용하고 중개 테이블(예: book_author)을 생성하는 연결 테이블을 지정합니다.
@Entity
public class Author {
    @Id
    private Long id;
    private String name;
    
    @ManyToMany
    @JoinTable(
        name = "book_author",
        joinColumns = @JoinColumn(name = "author_id"),
        inverseJoinColumns = @JoinColumn(name = "book_id")
    )
    private Set<Book> books = new HashSet<>();
    // ...
}
  1. Hibernate 설정 파일(예: hibernate.cfg.xml)에서 Many-to-Many 관계를 지원하도록 설정합니다.
<hibernate-configuration>
    <session-factory>
        <!-- ... -->
        <mapping class="com.example.Book"/>
        <mapping class="com.example.Author"/>
    </session-factory>
</hibernate-configuration>

위와 같이 설정하면 Hibernate가 BookAuthor 사이의 Many-to-Many 관계를 지원합니다.

참고 자료: