Hibernate は、サブクラスの識別に識別子列を使用し、ユニオン テーブル、単一テーブル、クラス階層などの戦略を提供します。 ユニオン テーブル: サブクラスごとに個別のテーブルを作成します。単一テーブル: 識別子列によって区別される、すべてのサブクラスのテーブルを作成します。クラス階層: 基本クラス テーブルを使用して親クラス属性を保存し、サブクラス テーブルを使用してサブクラス属性を保存します。
#Hibernate がサブクラス識別を処理する方法
はじめに
オブジェクト指向プログラミングにおけるでは、サブクラスは、基本クラスから新しい機能を派生するためによく使用されます。 Hibernate は、ユニオン テーブル、単一テーブル、クラス階層など、オブジェクトの継承を処理するためのさまざまな戦略を提供します。サブクラス識別
サブクラス識別は、特定のエンティティがどのサブクラスであるかを決定するプロセスです。 Hibernate は、discriminator 列を使用して、サブクラスを識別する情報を保存します。
戦略
Hibernate は、サブクラスの識別を処理するための 3 つの主要な戦略を提供します。実際のケース:
基本クラスperson と 2 つのサブクラス
Student および # # があるとします。 #従業員###。単一テーブル戦略を使用してサブクラスの識別を処理する方法は次のとおりです:
import javax.persistence.DiscriminatorColumn; import javax.persistence.DiscriminatorValue; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.Table; @Entity @Table(name = "Person") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING) public class Person { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; } @DiscriminatorValue("Student") public class Student extends Person { private String grade; } @DiscriminatorValue("Employee") public class Employee extends Person {
以上がHibernate はサブクラスの識別をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。