日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > 框架設(shè)計(jì) > 【SSH系列】Hibernate映射 -- 繼承映射

【SSH系列】Hibernate映射 -- 繼承映射

來(lái)源:程序員人生   發(fā)布時(shí)間:2016-07-21 09:10:21 閱讀次數(shù):3612次

開(kāi)篇前言

在前面的博文中,小編介紹了hibernate中的映照,1對(duì)1,1對(duì)多,多對(duì)多,單向,雙向等,今天這篇博文,小編主要來(lái)介紹1下hibernate中的繼承映照,小火伴都知道在C#中,如果想要實(shí)現(xiàn)繼承,直接在子類(lèi)中添加冒號(hào)便可繼承父類(lèi),在java中可以用關(guān)鍵字extends實(shí)現(xiàn),那末在hibernate中,甚么是繼承映照呢?繼承映照的方式又是甚么?繼承映照具有幾種策略呢?不同策略之間又存在著怎樣樣的區(qū)分和聯(lián)系呢?該博文,小編就來(lái)簡(jiǎn)單的總結(jié)1下hibernate中的繼承映照。

繼承映照是甚么

首先,我們來(lái)看這樣的1張表結(jié)構(gòu):

      

上述的表結(jié)構(gòu)就是繼承映照的1種,小豬豬和小鳥(niǎo)鳥(niǎo)他們共用了字段Name和Sex,除此以外,有些字段是針對(duì)某種數(shù)據(jù)而存在的,所以在數(shù)據(jù)庫(kù)中為空,如上所,weight是針對(duì)小豬豬而言的,而height是針對(duì)小鳥(niǎo)鳥(niǎo)而言的,從上面的表結(jié)構(gòu),我們可以得出,有些字段是共用的,有些字段是自己獨(dú)有的,她們通過(guò)type這個(gè)字段來(lái)進(jìn)行區(qū)分,ok,小編相信,小火伴們現(xiàn)在對(duì)繼承映照已有了1定的了解,接著小編來(lái)介紹繼承映照的方式。   

  繼承映照方式

在前面的博文中,小編提到過(guò),c#和java中的繼承,但是在數(shù)據(jù)庫(kù)的世界中,表之間是沒(méi)有任何關(guān)鍵字可以明確指明這兩張表的父子關(guān)系,表與表是沒(méi)有繼承關(guān)系這樣的說(shuō)法的。為了將程序領(lǐng)域中的繼承關(guān)系反應(yīng)到數(shù)據(jù)中,Hibernate為我們提供了3種策略,分別是:
a、每顆類(lèi)繼承樹(shù)1張表;
b、每一個(gè)類(lèi)1張表;
c、每一個(gè)具體類(lèi)1張表;
我們?nèi)匀粡膗ml入手,看對(duì)象模型,以下所示:

Pig和Bird都繼承Animal,她們都有id,name,sex,但是Pig主要看weight,而B(niǎo)ird主要看height,此時(shí)如果把這些數(shù)據(jù)存入到數(shù)據(jù)庫(kù)中,可以有3種方案,也就是3種策略。ok,接下來(lái)結(jié)合Animal這個(gè)例子,分別對(duì)3種策略進(jìn)行講授。
第1種、每顆類(lèi)繼承樹(shù)1張表
這類(lèi)方式,只生成1個(gè)table,對(duì)應(yīng)的繼承映照策略是“單表繼承”。如圖:   


每顆類(lèi)繼承樹(shù)1張表,也就是使用1張表表示所有繼承體系下的類(lèi)的屬性的并集,這類(lèi)策略是使用<subclass>標(biāo)簽來(lái)實(shí)現(xiàn)的。由于類(lèi)繼承體系下會(huì)有許多個(gè)子類(lèi),要把多個(gè)類(lèi)的信息寄存在1張表中,必須有某種機(jī)制來(lái)辨別哪些記錄是屬于哪一個(gè)類(lèi)的。Hibernate中的這類(lèi)機(jī)制就是,在表中添加1個(gè)字段,用這個(gè)字段的值來(lái)進(jìn)行辨別。在表中添加這個(gè)標(biāo)示列使用<discriminator>標(biāo)簽來(lái)實(shí)現(xiàn),hbm.xml文件以下所示:

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping⑶.0.dtd"> <hibernate-mapping package="com.bjpowernode.hibernate"> <class name="Animal" table="t_animal" lazy="false"> <id name="id"> <generator class="native"/> </id> <discriminator column="type" type="string"/> <property name="name"/> <property name="sex"/> <subclass name="Pig" discriminator-value="P"> <property name="weight"/> </subclass> <subclass name="Bird" discriminator-value="B"> <property name="height"/> </subclass> </class> </hibernate-mapping>
第2種、每一個(gè)類(lèi)1張表

這類(lèi)方式,每一個(gè)類(lèi)生成1個(gè)table,對(duì)應(yīng)的繼承策略是“類(lèi)表繼承”。如圖:

這類(lèi)策略是使用<joined-subclass>標(biāo)簽來(lái)定義子類(lèi)的。父類(lèi)、子類(lèi)都對(duì)應(yīng)1張數(shù)據(jù)庫(kù)表。在父類(lèi)對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中,它存儲(chǔ)了所有記錄的公共信息,實(shí)際上該父類(lèi)對(duì)應(yīng)的表會(huì)包括所有的記錄,包括父類(lèi)和子類(lèi)的記錄;在子類(lèi)對(duì)應(yīng)的數(shù)據(jù)庫(kù)表中,這個(gè)表只定義了子類(lèi)中所獨(dú)有的屬性映照的字段。子類(lèi)對(duì)應(yīng)的數(shù)據(jù)表與父類(lèi)對(duì)應(yīng)的數(shù)據(jù)表,通過(guò)1對(duì)1主鍵關(guān)聯(lián)的方式關(guān)聯(lián)起來(lái)。Hbm.xml文件以下所示:

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping⑶.0.dtd"> <hibernate-mapping package="com.bjpowernode.hibernate"> <class name="Animal" table="t_animal"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <properties name="sex"/> <joined-subclass name="Pig" table="t_pig"> <key column ="pid"/> <property name="weight"/> </joined-subclass> <joined-subclass name="Bird" table="t_bird"> <key column = "bird"/> <property name="height"/> </joined-subclass> </class> </hibernate-mapping>
第3種、每一個(gè)具體類(lèi)1張表
這類(lèi)方式,生成3張表,對(duì)應(yīng)的策略是“具體表繼承”,以下圖所示:

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产h片在线观看 | 亚洲精品视频播放 | 美女国产一区 | 国产欧美日韩在线观看 | 久久久久亚洲 | 国产精品一区二区精品视频免费看 | av网站免费看 | 国产精品精品视频一区二区三区 | 成人性生交大片免费看视频r | 成人午夜精品 | 免费看成人吃奶视频在线 | 国产一区二区三区久久久久久久久 | 日韩精品一区二区三区免费视频 | 日韩午夜免费视频 | 久久免费视频1 | 国产精品久久久久久久久免费看 | 国产精品久久99 | 懂色av一区二区三区免费 | 精品国产一区二区三区久久久 | 久久精品视频偷拍 | 在线欧美日韩 | www.日韩高清 | 免费一级淫片aaa片毛片a级 | 欧美亚洲福利 | 国产精品久久久久久久久久免费看 | 国产精品日本一区二区不卡视频 | 久久xx| 亚洲国产网站 | 在线精品一区二区 | 国产精品一区在线 | 美女福利在线观看 | 国产精品区一区二区三在线播放 | 中文字幕 av在线 | 久久免费看 | 性视频在线 | 久久只精品 | 91国偷自产一区二区使用方法 | 久久只精品99品免费久23小说 | 亚洲毛片在线观看 | 国产精品久久久久久影视 | 亚洲自拍偷拍第一页 |