繼承關係對映詳解

2021-09-30 09:07:22 字數 1099 閱讀 8625

繼承關係對映

繼承在物件模型中是 is a(是乙個)的關係,但在關係模型中,實際之間只有has a(有乙個)的關係,也就是說,繼承在物件模型和關係模型上是不匹配的,索性的是hibernate提供了3中常用的繼承映方案。

一.整個繼承層次一張表

把整個繼承層次的多個類的資訊存放到一張表裡。需要在表中新增乙個特定字段,用這個欄位的值來進行區分哪些記錄是屬於哪乙個類的。

discriminator-value="0">

//指定鑑別器字段,要放置在所有屬性對映之前

int">

//用subclass對映子類,指定鑑別字段值

skiller" discriminator-value="1">

//對映本子類的屬性

discriminator-value="2">

二.  每乙個子類一張表

這種方案是把物件模型上的繼承關係表示為關係模型中的外來鍵關聯,繼承機構中的每個類和子類都有一張對應的資料庫

//用joined—subclass元素給每個子類對映到一張表

skiller"table="skiller">

//用key元素來指定子類和父類之間通過那個欄位來關聯的

//對映本子類的屬性

三.  每個具體類一張表

這種策略是針對每個具體類對應一張表,而且這張表的資訊室完備的,它包含所有叢父類繼承下來的屬性對映的字段和自己的屬性對映的字段

"employee"table="employee">

"id"column="id">

"hilo"/>

"name"/>

"depart" column="depart_id">

//用union-subclass元素給每乙個具體子類對映到一張表

"skiller" table="skiller">

//對映本子類的屬性

"skill">

"sales" table="sales">

"sell">

總結:1.如果不需要多型查詢:使用每個具體類一張表。

2.一定要使用多型查詢:子類中的屬性相對較少,使用每個繼承層次一張表。

3.子類中的屬性 較多,使用每個子類一張表。

Hibernate 繼承關係對映

繼承關係對映 繼承是物件導向程式設計中乙個很重要的特徵,在做物件導向的分析與設計時,經常會設計出具體繼承關聯對映的持久化類。如何把這些持久化類之間的繼承關係對映到關聯式資料庫上的問題已解決。繼承在物件模型中是is a的關係,但在關係模型中,實體之間只有has a的關係,也就是說,繼承在物件模型和關係...

Hhibernate 對映繼承關係

hibernate對映繼承關係 有三種方式實現 subclass joined cubclass union subclass 1.subclass 父類和子類同在一張表,裡面加入了辨別者列,通過辨別者列的值來區分,子類物件和父類物件 優點 只操作乙個表 缺點 子類的屬性,不能設定為非空 如果子類的...

SSH 基礎 Hibernate繼承關係對映

繼承關係大家應該都很清楚,那麼對於hibernate對於繼承來說是如何對映的呢?下面就介紹一下hibernate繼承類對映到表的三種方式 1 一棵繼承樹對映一張表。2 每個子類各自對映表。3 繼承樹的每個類各自對映表。直接上圖,如下圖所示。2 每個子類一張表。3 每個類一張表 子類 父類 對比 以上...