<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Dev@Free

    zJun's Tech Weblog

    [深入淺出Hibernate筆記] Hibernate中的繼承關(guān)系

    Hibernate中支持3種形式實(shí)現(xiàn)繼承關(guān)系:
    1. Table per concrete class 表與子類之間獨(dú)立一對(duì)一關(guān)系
    2. Table per subclass 每個(gè)子類對(duì)應(yīng)一張子表,并與主類共享主表
    3. Table per class hierarchy 表與類一對(duì)多關(guān)系

    1. Table per concrete class
    數(shù)據(jù)庫:
    父類沒有對(duì)應(yīng)的表,每個(gè)子類獨(dú)立對(duì)應(yīng)一張表,父類中的公共屬性將在每一張表中以相同冗余字段的形式出現(xiàn)。
    映射文件:子類對(duì)應(yīng)的Hibernate的配映射文件與普通映射文件沒有特別區(qū)別,只是通過<class>節(jié)點(diǎn)的 polymorphism="implicit" 屬性實(shí)現(xiàn)隱式多態(tài)模式來實(shí)現(xiàn)與父類之間的繼承關(guān)系。

    2. Table per subclass
    數(shù)據(jù)庫:父類單獨(dú)映射一張主表,而每個(gè)子類分別映射一張子表。子表和主表通過外鍵相關(guān)聯(lián)。
    映射文件:在映射文件中通過 <joined-subclass> 節(jié)點(diǎn)來表示主類和子類之間的繼承關(guān)系,如下:

    <hibernate-mapping>
    ? <class name="BaseClass" table="T_BASE">
    ??? <id name="id" column="id">
    ????? <generator class="native"/>
    ??? </id>
    ??? <property name="name" column="name"/>
    ??? <!--申明子類1-->
    ??? <joined-subclass name="SubClass1" table="T_SUB1">
    ????? <key column="id"/>
    ????? <property name="subName1" column="subName1"/>
    ??? </joined-subclass>

    ??? <!--申明子類2-->
    ??? <joined-subclass name="SubClass2" table="T_SUB1">
    ????? <key column="id"/>
    ????? <property name="subName2" column="subName2"/>
    ??? </joined-subclass>
    ? </class>
    </hibernate-mapping>

    3. Table per class hierarchy
    數(shù)據(jù)庫:用一張表對(duì)應(yīng)所有子類,包含所有子類字段,通過一個(gè)標(biāo)示類別的字段來區(qū)分不同子類對(duì)應(yīng)的數(shù)據(jù)。
    映射文件:通過<subclass>?和<disriminator>節(jié)點(diǎn)來對(duì)不同子類加以區(qū)別,如下:

    <hibernate-mapping>
    ? <class name="BaseClass" table="T_BASE">
    ??? <id name="id" column="id">
    ????? <generator class="native"/>
    ??? </id>
    ??? <discriminator column="category" type="string"/>??????????????? <------------- 聲明discriminator字段
    ??? <property name="name" column="name"/>
    ????<!--子類1-->?????
    ??? <subclass name="SubClass1" discriminator-value="1">???????<------------- discriminator為1,則是子類1
    ?????? <property name="subName1" column="subName1"/>
    ??? </subclass>
    ??
    ??? <!--子類2-->?????
    ????<subclass name="SubClass2" discriminator-value="2">?????? <------------- discriminator為2,則是子類2
    ?????? <property name="subName2" column="subName2"/>
    ??? </subclass>

    ? </class>
    <hibernate-mapping>

    posted on 2006-08-16 15:15 zJun's帛羅閣 閱讀(1180) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

    導(dǎo)航

    <2006年8月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計(jì)

    常用鏈接

    留言簿(15)

    隨筆分類

    隨筆檔案

    相冊(cè)

    收藏夾

    博客

    文檔

    站點(diǎn)

    論壇

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 伊人久久大香线蕉亚洲 | 亚洲av无码日韩av无码网站冲| 久久99国产综合精品免费| 亚洲AV无码一区二区二三区入口| 免费无码黄网站在线看| 国产亚洲精品一品区99热| A级毛片高清免费视频在线播放| 亚洲人JIZZ日本人| 另类免费视频一区二区在线观看| 亚洲国产精品无码久久久不卡| 精品国产一区二区三区免费| 亚洲福利在线视频| 国产又大又粗又长免费视频| 亚洲色图激情文学| 免费在线观看a级毛片| 中国性猛交xxxxx免费看| 久久亚洲精品无码| 99re热免费精品视频观看 | 免费国产a理论片| 国产乱辈通伦影片在线播放亚洲| 在线观看黄片免费入口不卡| 亚洲免费视频网站| 国产精品视频免费一区二区| 国产成人亚洲综合在线| 精品久久香蕉国产线看观看亚洲| 亚洲免费精彩视频在线观看| 亚洲国产精品免费观看| 亚洲av日韩av欧v在线天堂| 大地影院MV在线观看视频免费| 亚洲经典在线观看| 免费a级黄色毛片| 国产白丝无码免费视频| 国产成人精品日本亚洲专 | 亚洲AV无码久久精品色欲| 97国产免费全部免费观看| 美女被免费网站视频在线| 亚洲国产精品福利片在线观看| 最新欧洲大片免费在线| 免费福利在线观看| 亚洲一区动漫卡通在线播放| 精品国产香蕉伊思人在线在线亚洲一区二区 |