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

Hibernate는 객체 관계 매핑(Object-Relational Mapping, ORM) 도구로서, 객체와 데이터베이스를 매핑하여 자동으로 데이터를 저장하고 조회할 수 있는 기능을 제공합니다. 상속 관계를 매핑하는 방법은 다음과 같습니다.

  1. 단일 테이블 전략 (Single Table Strategy)
    • 부모 클래스와 자식 클래스의 모든 속성을 하나의 테이블에 저장합니다.
    • @Inheritance(strategy = InheritanceType.SINGLE_TABLE) 애노테이션을 사용하여 부모 클래스에 매핑 전략을 설정합니다.
    • @DiscriminatorColumn(name = “discriminator”) 애노테이션을 사용하여 자식 클래스를 구분할 열을 지정합니다.
    • @DiscriminatorValue(“child”) 애노테이션을 사용하여 자식 클래스를 식별하는 값을 지정합니다.
  2. 구분 테이블 전략 (Table Per Class Strategy)
    • 부모 클래스와 자식 클래스를 각각 별도의 테이블로 저장합니다.
    • 부모 클래스에는 @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 애노테이션을 사용합니다.
    • 자식 클래스는 @PrimaryKeyJoinColumn 애노테이션을 사용하여 부모 테이블과의 관계를 설정합니다.
  3. 단일 테이블 전략과 구분 테이블 전략의 조합 (Joined Strategy)
    • 부모 클래스와 자식 클래스를 단일 테이블에 저장하면서 자식 클래스는 별도의 테이블에도 저장합니다.
    • 부모 클래스에는 @Inheritance(strategy = InheritanceType.JOINED) 애노테이션을 사용합니다.
    • 자식 클래스에는 @PrimaryKeyJoinColumn 애노테이션을 사용하여 부모 테이블과의 관계를 설정합니다.

이와 같은 방법을 사용하여 Hibernate에서 상속 관계를 매핑할 수 있습니다. Hibernate 문서 및 튜토리얼에는 상세한 사용 방법과 예제 코드가 제공되니 참고하시기 바랍니다.