日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
淺析Hibernate繼承關(guān)系樹的三種映射方式

在向大家詳細(xì)介紹Hibernate繼承關(guān)系樹的三種映射方式之前,首先讓大家了解下Employee類為抽象類,然后全面介紹。

創(chuàng)新互聯(lián)是一家專業(yè)提供赤峰企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為赤峰眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

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

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

 
 
 
  1. List employees= businessService.findAllEmployees();  
  2. Iterator it=employees.iterator();  
  3. while(it.hasNext()){  
  4. Employee e=(Employee)it.next();  
  5. if(e instanceof HourlyEmployee){  
  6. System.out.println(e.getName()+" "+((HourlyEmployee)e).getRate());  
  7. }else  
  8. System.out.println(e.getName()+" "+((SalariedEmployee)e).getSalary());  
  9. }  

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

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

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

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

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

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

以上每種映射方式都有利有弊,本章只介紹Hibernate繼承關(guān)系樹的三種映射方式。


網(wǎng)站名稱:淺析Hibernate繼承關(guān)系樹的三種映射方式
網(wǎng)頁(yè)URL:http://www.5511xx.com/article/djdjddc.html