>  기사  >  Java  >  Hibernate는 어떻게 다형성 매핑을 구현합니까?

Hibernate는 어떻게 다형성 매핑을 구현합니까?

王林
王林원래의
2024-04-17 12:09:01476검색

Hibernate 다형성 매핑은 상속된 클래스를 데이터베이스에 매핑하여 다음 매핑 유형을 제공할 수 있습니다. Joined-subclass: 상위 클래스의 모든 열을 포함하여 하위 클래스에 대한 별도의 테이블을 만듭니다. 클래스별 테이블: 하위 클래스별 열만 포함하는 하위 클래스에 대한 별도의 테이블을 만듭니다. Union-subclass: Joined-subclass와 유사하지만 상위 클래스 테이블이 모든 하위 클래스 열을 조인합니다.

Hibernate 如何实现多态映射?

Hibernate 다형성 매핑: 심층 분석

소개
객체 지향 프로그래밍에서는 일반적으로 상속된 클래스를 데이터베이스에 매핑해야 하는 상황에 직면하게 됩니다. Hibernate는 다형성 매핑 기능을 통해 이 요구 사항을 쉽게 달성할 수 있습니다.

다형성 매핑 유형
Hibernate는 상속된 클래스 간의 관계를 처리하기 위한 여러 다형성 매핑 유형을 제공합니다.

  • joined-subclass: 각 하위 클래스에 대해 별도의 테이블을 생성하고 클래스 테이블의 상위 All 열을 포함합니다.
  • table-per-class: 하위 클래스별 열만 포함하는 각 하위 클래스에 대해 별도의 테이블을 만듭니다.
  • union-subclass: joined-subclass와 유사하지만 상위 클래스 테이블의 모든 하위 클래스 열을 통합합니다. joined-subclass 类似,但在父类表中联合所有子类的列。

实战案例
假设我们有一个抽象类 Person,有两个子类 StudentTeacherPerson 类有 idname 字段,Student 类有 grade 字段,Teacher 类有 salary 字段。

Hibernate 映射配置
对于 Person 类:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Person {
  @Id
  private Long id;
  private String name;
  // ... 省略其他字段
}

对于 Student 类:

@Entity
public class Student extends Person {
  private Integer grade;
  // ... 省略其他字段
}

对于 Teacher

실용 사례
추상 클래스 Person과 두 개의 하위 클래스 StudentTeacher가 있다고 가정합니다. Person 클래스에는 idname 필드가 있고, Student 클래스에는 grade 필드, < code>Teacher 클래스에는 salary 필드가 있습니다.

Hibernate 매핑 구성

Person 클래스의 경우:

@Entity
public class Teacher extends Person {
  private Integer salary;
  // ... 省略其他字段
}

Student 클래스의 경우:
    Session session = sessionFactory.getCurrentSession();
    List<Person> persons = session.createQuery("from Person", Person.class).list();
  • Teacher 클래스의 경우:
  • rrreee
  • Query example
  • 모든 사람을 쿼리하려면 다음 코드를 사용하면 됩니다.
rrreee

Hibernate는 상속 전략에 따라 하위 클래스 데이터를 자동으로 로드합니다.

장점
  • 상속된 클래스 매핑을 단순화합니다.
모든 하위 범주 데이터를 일관된 방식으로 검색하는 다형성 쿼리를 지원합니다. 🎜🎜상속 전략에 따라 테이블 구조를 최적화할 수 있습니다. 🎜🎜🎜🎜 참고 🎜🎜🎜🎜 성능과 사용성 기능에 영향을 미치는 적절한 상속 전략을 선택하는 것이 매우 중요합니다. 🎜🎜다형성 매핑을 사용할 때는 데이터베이스 테이블의 구조가 매핑 구성과 일치하는지 확인해야 합니다. 🎜🎜

위 내용은 Hibernate는 어떻게 다형성 매핑을 구현합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.