<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)論排行榜

    主站蜘蛛池模板: 黄床大片免费30分钟国产精品| 亚洲欧美综合精品成人导航| 国产综合精品久久亚洲| 怡红院亚洲怡红院首页| 深夜福利在线视频免费| 免费av一区二区三区| 日本妇人成熟免费中文字幕| 成人au免费视频影院| 亚洲AV之男人的天堂| 97亚洲熟妇自偷自拍另类图片| 国内精品99亚洲免费高清| 香蕉视频在线免费看| 亚洲AV无码乱码国产麻豆| 亚洲中文字幕AV每天更新| 97在线免费观看视频| 国产精品jizz在线观看免费| 亚洲精品无码成人片在线观看| 亚洲国产午夜电影在线入口| 国产大片免费天天看| 免费羞羞视频网站| 亚洲第一区视频在线观看| 999zyz**站免费毛片| 中文字幕亚洲色图| 成人免费a级毛片| 亚洲成A∨人片在线观看不卡| 亚洲精品av无码喷奶水糖心| 1000部拍拍拍18勿入免费视频下载| 亚洲国产成人a精品不卡在线| EEUSS影院WWW在线观看免费| 亚洲丝袜美腿视频| 久久久精品午夜免费不卡| 亚洲制服丝袜在线播放| 国产成人综合久久精品免费| 国产色爽免费无码视频| 国产亚洲精品看片在线观看 | 免费看国产曰批40分钟| 亚洲欧洲精品国产区| 四虎影视永久免费观看| 免费的全黄一级录像带| 亚洲乱码无人区卡1卡2卡3| 亚洲区小说区图片区QVOD|