[java] Hibernate에서 연관 관계 매핑하는 방법은?

Hibernate는 자바 기반의 ORM (Object-Relational Mapping) 도구로, 객체와 관계형 데이터베이스 간의 연결을 쉽게 맺을 수 있도록 도와줍니다. 연관 관계 매핑은 Hibernate에서 매우 중요한 개념입니다.

Hibernate에서는 세 가지 주요한 연관 관계 매핑 방법을 제공합니다.

  1. 일대일 관계 (One-to-One):
    • @OneToOne 어노테이션을 사용하여 일대일 관계를 매핑합니다.
    • 주 테이블과 대상 테이블 간에 관계를 설정할 수 있습니다.
    • 주 테이블의 외래 키를 사용하여 대상 테이블과의 관계를 맺습니다.
  2. 일대다 관계 (One-to-Many):
    • @OneToMany 어노테이션을 사용하여 일대다 관계를 매핑합니다.
    • 주 테이블과 대상 테이블 간에 일대다 관계를 설정할 수 있습니다.
    • 주 테이블의 기본 키를 대상 테이블의 외래 키로 사용합니다.
  3. 다대다 관계 (Many-to-Many):
    • @ManyToMany 어노테이션을 사용하여 다대다 관계를 매핑합니다.
    • 주 테이블과 대상 테이블 간에 다대다 관계를 설정할 수 있습니다.
    • 연결 테이블을 사용하여 주 테이블과 대상 테이블의 관계를 맺습니다.

아래는 예시입니다:

@Entity
public class University {
    @Id
    @GeneratedValue
    private Long id;
    
    private String name;
    
    @OneToMany(mappedBy = "university")
    private List<Student> students;    
}

@Entity
public class Student {
    @Id
    @GeneratedValue
    private Long id;
    
    private String name;
    
    @ManyToOne
    @JoinColumn(name = "university_id")
    private University university;
}

위의 예시에서는 대학(University)과 학생(Student)의 일대다 관계를 매핑하였습니다. 대학 엔티티에서는 @OneToMany 어노테이션을 사용하여 학생 리스트를 선언하고, mappedBy 속성으로 학생 엔티티의 university 필드와의 관계를 설정합니다. 학생 엔티티에서는 @ManyToOne 어노테이션으로 대학과의 다대일 관계를 설정하고, @JoinColumn 어노테이션으로 연결할 외래 키의 이름을 지정합니다.

이렇게 Hibernate에서 연관 관계를 매핑하면 객체 간의 관계를 쉽게 정의하여 데이터베이스와의 상호 작용을 간소화할 수 있습니다.

더 자세한 정보는 Hibernate 공식 문서를 참조하십시오: Hibernate 매핑 가이드