繼承對映是將乙個繼承體系對映到資料庫表裡面,繼承實現的三種策略:
①單錶繼承,每顆類繼承樹使用一張表(一張表)
②具體表繼承,每個子類一張表(三張表,
animal
、pig
、bird)
③類表繼承,每個具體類一張表(兩張表,
策略描述
①單錶繼承,效率較高,只需查一張表就好,需要新增乙個標記欄位來標記是哪個子類,而且會產生冗餘的字段。
②具體表繼承,生成的表比較清楚,當數量非常大的時候效率不高,類的繼承層次越深,關聯的表越多。
③類表繼承,每個類在對映檔案中都需要描述,抽象的類沒有具體的表,不能使用自增字段作為主鍵
實體類
public class animal
public void setid(int id)
public string getname()
public void setname(string name)
public boolean get***()
public void set***(boolean ***)
}public class pig extends animal
public void setweight(int weight)
}public class bird extends animal
public void setheight(int height)
}
對映
①單錶繼承
②具體表繼承
③類表繼承
效果展示
①單錶繼承
②具體表繼承
③類表繼承
每種繼承對映都有自己的利弊,根據繼承類層次的深度和類的多少,以及資料的多少合理選擇使用哪種繼承策略。
hibernate繼承對映
每棵繼承樹對映成一張表 因為類繼承樹肯定是對應多個類,要把多個類的資訊存放在一張表中,必須有某種機制來區分哪些記錄是屬於哪個類的。這種機制就是,在表中新增乙個字段,用這個欄位的值來進行區分。用hibernate實現這種策略的時候,有如下步驟 父類用普通的標籤定義 在父類中定義乙個discrimina...
Hibernate 繼承關係對映
繼承關係對映 繼承是物件導向程式設計中乙個很重要的特徵,在做物件導向的分析與設計時,經常會設計出具體繼承關聯對映的持久化類。如何把這些持久化類之間的繼承關係對映到關聯式資料庫上的問題已解決。繼承在物件模型中是is a的關係,但在關係模型中,實體之間只有has a的關係,也就是說,繼承在物件模型和關係...
Hibernate的繼承對映
關係模型如下 對映檔案如下 package com.nnngu name animal table t animal lazy false name id class native id column type type string name name name name pig discrimi...