国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

精通Hibernate映射繼承關(guān)系之一

2019-11-18 16:11:50
字體:
供稿:網(wǎng)友

  在域模型中,類與類之間除了關(guān)聯(lián)關(guān)系和聚集關(guān)系,還可以存在繼承關(guān)系,在圖14-1所示的域模型中,Company類和Employee類之間為一對多的雙向關(guān)聯(lián)關(guān)系(假定不允許雇員同時在多個公司兼職),Employee類為抽象類,因此它不能被實例化,它有兩個具體的子類:HourlyEmployee類和SalariedEmployee類。由于java只允許一個類最多有一個直接的父類,因此Employee類、HourlyEmployee類和SalariedEmployee類構(gòu)成了一棵繼承關(guān)系樹。
精通Hibernate映射繼承關(guān)系之一


圖14-1 包含繼承關(guān)系的域模型


在面向?qū)ο蟮姆懂犞校€存在多態(tài)的概念,多態(tài)建立在繼承關(guān)系的基礎(chǔ)上。簡單地理解,多態(tài)是指當(dāng)一個Java應(yīng)用變量被聲明為Employee類時,這個變量實際上既可以引用HourlyEmployee類的實例,也可以引用SalariedEmployee類的實例。以下這段程序代碼就體現(xiàn)了多態(tài):

List employees= businessService.findAllEmployees();Iterator it=employees.iterator();while(it.hasNext()){Employee e=(Employee)it.next();if(e instanceof HourlyEmployee){System.out.



BusinessService類的findAllEmployees()方法通過Hibernate API從
數(shù)據(jù)庫中檢索出所有Employee對象。findAllEmployees()方法返回的集合既包含HourlyEmployee類的實例,也包含SalariedEmployee類的實例,這種查詢被稱為多態(tài)查詢。以上程序中變量e被聲明為Employee類型,它實際上既可能引用HourlyEmployee類的實例,也可能引用SalariedEmployee類的實例。

此外,從Company類到Employee類為多態(tài)關(guān)聯(lián),因為Company類的employees集合中可以包含HourlyEmployee類和SalariedEmployee類的實例。從Employee類到Company類不是多態(tài)關(guān)聯(lián),因為Employee類的company屬性只會引用Company類本身的實例。數(shù)據(jù)庫表之間并不存在繼承關(guān)系,那么如何把域模型的繼承關(guān)系映射到關(guān)系數(shù)據(jù)模型中呢?本章將介紹以下三種映射方式:

繼承關(guān)系樹的每個具體類對應(yīng)一個表:關(guān)系數(shù)據(jù)模型完全不支持域模型中的繼承關(guān)系和多態(tài)。

繼承關(guān)系樹的根類對應(yīng)一個表:對關(guān)系數(shù)據(jù)模型進(jìn)行非常規(guī)設(shè)計,在數(shù)據(jù)庫表中加入額外的區(qū)分子類型的字段。通過這種方式,可以使關(guān)系數(shù)據(jù)模型支持繼承關(guān)系和多態(tài)。

繼承關(guān)系樹的每個類對應(yīng)一個表:在關(guān)系數(shù)據(jù)模型中用外鍵參照關(guān)系來表示繼承關(guān)系。

提示:具體類是指非抽象的類,具體類可以被實例化。HourlyEmployee類和SalariedEmployee類就是具體類。

以上每種映射方式都有利有弊,本章除了介紹每種映射方式的具體步驟,還介紹了它們的適用范圍。

(出處:http://m.survivalescaperooms.com)



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿拉善盟| 山东省| 舒城县| 淅川县| 昌平区| 朝阳区| 黔江区| 漠河县| 察雅县| 蓝山县| 玉山县| 怀集县| 吉木萨尔县| 乡宁县| 石城县| 明光市| 兴安县| 雷山县| 革吉县| 裕民县| 绥棱县| 荆门市| 方正县| 长垣县| 安多县| 颍上县| 科技| 长春市| 峨眉山市| 湖南省| 武胜县| 贵州省| 阳东县| 香格里拉县| 依兰县| 扎囊县| 肥乡县| 尉犁县| 彰化县| 汤原县| 宁波市|