每棵繼承樹對映成一張表

2021-08-29 17:46:47 字數 780 閱讀 8123

每棵繼承樹對映成一張表

1、理解如何對映

因為類繼承樹肯定是對應多個類,要把多個類的資訊存放在一張表中,必須有某種機制來區分哪些記錄是屬於哪個類的。

這種機制就是,在表中新增乙個字段,用這個欄位的值來進行區分。用hibernate實現這種策略的時候,有如下步驟:

父類用普通的標籤定義

在父類中定義乙個discriminator,即指定這個區分的字段的名稱和型別

如:子類使用標籤定義,在定義subclass的時候,需要注意如下幾點:

subclass標籤的name屬性是子類的全路徑名

在subclass標籤中,用discriminator-value屬性來標明本子類的discriminator欄位(用來區分不同類的字段)

的值subclass標籤,既可以被class標籤所包含(這種包含關係正是表明了類之間的繼承關係),也可以與class標

籤平行。 當subclass標籤的定義與class標籤平行的時候,需要在subclass標籤中,新增extends屬性,裡面的值

是父類的全路徑名稱。子類的其它屬性,像普通類一樣,定義在subclass標籤的內部。

2、理解如何儲存

儲存的時候hibernate會自動將鑑別字段值插入到資料庫中,在載入資料的時候,hibernate能根據這個鑑別值

正確的載入物件

多型查詢:在hibernate載入資料的時候能鑑別出正真的型別(instanceof)

get支援多型查詢

load只有在lazy=false,才支援多型查詢

hql支援多型查詢

14 繼承 一 整個繼承樹對映到一張表

人類 person 男人 men 繼承 人 類,女人 women 繼承 人 類,uml如下 對映到如下的t person表中 有以下6個字段 1 int id 主鍵 2 varchar name 父類中的姓名 3 int age 父類中的年齡 4 int varchar type 區分 人 男人 女...

繼承 單錶繼承 每棵類繼承樹使用乙個表

1.單錶繼承 即每棵類繼承樹使用乙個表。1 類繼承樹對應多個類,多個類的資訊儲存於一張表中,那麼如何區分某條記錄屬於哪個類?採用的機制是在表中新增乙個字段,用字段的值來進行區分。2 配置檔案如下 說明如下 a 父類採用標籤定義 b 在父類中定義乙個discriminator,即指定用於區分欄位的名稱...

根據一張表去更新另一張表

最近在改乙個專案,由於是別人做好的,很多資料表資訊不全。不得不手工用sql更新資料表。現在又這麼2張表 第一張是管理員表 id 使用者id c id 分公司id p id 部門id name 使用者名稱 第二張是訂單表 id 訂單id com id 訂單所屬銷售的公司id dep id 訂單所屬銷售...