Hibernate 使用 discriminator 列來進行子類別鑑別,提供了聯合表、單表和類別層次結構等策略:聯合表:為每個子類別建立單獨的表。單表:為所有子類別建立一個表,用 discriminator 欄位區分。類別層次結構:用基底類別表儲存父類別屬性,用子類別表儲存子類別屬性。
Hibernate 如何處理子類別鑑別
簡介
在物件導向編程中,子類別經常用於從基本類別派生新功能。 Hibernate 為處理物件繼承提供了不同的策略,包括聯合表、單表和類別層次結構。
子類別鑑別
子類別鑑別是指確定給定實體是哪一種子類別的過程。 Hibernate 使用 discriminator 欄位來儲存識別子類別的資訊。
策略
Hibernate 提供了三種主要策略來處理子類別鑑別:
實戰案例:
假設我們有一個Person 基底類別和兩個子類別
Student 和
Employee。以下是如何使用單表策略處理子類別鑑別:
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中文網其他相關文章!