Hibernate 多態映射可映射繼承類別到資料庫,提供以下映射類型:joined-subclass:為子類別建立單獨表,包含父類別所有列。 table-per-class:為子類別建立單獨資料表,僅包含子類別特有列。 union-subclass:類似 joined-subclass,但父類別表聯合所有子類別列。
Hibernate 多態映射:深入解析
簡介
在物件導向程式設計中,通常會遇到需要將繼承類別對應到資料庫中的情況。 Hibernate 透過多型映射功能,可以輕鬆實現這項需求。
多態映射類型
Hibernate 提供了幾種多態映射類型,用於處理繼承類別之間的關係:
joined-subclass
類似,但在父類別表中聯合所有子類別的資料列。 實戰案例
假設我們有一個抽象類別Person
,有兩個子類別Student
和Teacher
。 Person
類別有id
和name
字段,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
類別:
@Entity public class Teacher extends Person { private Integer salary; // ... 省略其他字段 }
查詢範例
要查詢所有人員,可以使用以下程式碼:
Session session = sessionFactory.getCurrentSession(); List<Person> persons = session.createQuery("from Person", Person.class).list();
Hibernate 將根據繼承策略自動載入子類別資料。
優點
注意
以上是Hibernate 如何實作多型映射?的詳細內容。更多資訊請關注PHP中文網其他相關文章!