關於繼承對映(上)

2021-08-25 14:58:21 字數 575 閱讀 3968

關於繼承對映 1 每個類分層結構一張表(table per class hierarchy)

採用這種策略只需要一張表即可。它有乙個很大的限制:要求那些由子類定義的字段, 如component,不能有非空(not null)約束。 優點:這樣做的優點包括只有一張表查詢簡單以及容易與其他表進行關聯 ,策略的效能調優要比其他策略容易得多,比較適合做資料倉儲系統 ,因為所有資料在一張表裡面 不需要做關聯。 缺點:如果子類的屬性過多 就會用很多 為null的屬性 這為基於行的sql調優增加了難度,sig系統中使用了分割槽解決這個問題 2 每個子類一張表(table per subclass)

需要四張表。三個子類表通過主鍵關聯到超類表(因而關係模型實際上是一對一關聯)。 優點:包括資料表比較緊湊(沒有不需要的可空字段),資料跨三個子類的表進行分割槽,容易使用超類的表與其他表進行關聯。緊湊的資料表可以針對基於行的資料庫做儲存塊優化,讓sql執行得更好。資料分割槽增加了資料修改的併發性(除了超類,沒有熱點),oltp系統通常會更好些 缺點:在所有策略中它使用的表和表連線最多 3 每個具體類一張表(table per concrete class) 要用到的關鍵字注意主鍵id不能重複 -->不建父類表

1 25 繼承對映

三種方法實現表的繼承。1.student和teacher放在乙個表中。2.每個類分別一張表。3.共用屬性乙個表,每個子類一張表。一 第一種實現方式。student的屬性,teacher的屬性放在乙個表中,用乙個字段 fenlei 來區分是學生和老師。person類 entity inheritanc...

Hibernate 繼承對映

繼承對映是將乙個繼承體系對映到資料庫表裡面,繼承實現的三種策略 單錶繼承,每顆類繼承樹使用一張表 一張表 具體表繼承,每個子類一張表 三張表,animal pig bird 類表繼承,每個具體類一張表 兩張表,策略描述 單錶繼承,效率較高,只需查一張表就好,需要新增乙個標記欄位來標記是哪個子類,而且...

hibernate繼承對映

每棵繼承樹對映成一張表 因為類繼承樹肯定是對應多個類,要把多個類的資訊存放在一張表中,必須有某種機制來區分哪些記錄是屬於哪個類的。這種機制就是,在表中新增乙個字段,用這個欄位的值來進行區分。用hibernate實現這種策略的時候,有如下步驟 父類用普通的標籤定義 在父類中定義乙個discrimina...