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

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

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

    隨筆 - 6  文章 - 129  trackbacks - 0
    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 828870
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

      一對多和多對一關(guān)系在實(shí)際生活中是非常常見的。在編寫程序時,有兩種實(shí)現(xiàn)的形式
    分別是單向關(guān)聯(lián)和雙向關(guān)聯(lián)。

    單向關(guān)聯(lián)

    雙向關(guān)聯(lián)

      本節(jié)中使用到兩個類,分別是班級(Team)和學(xué)生(Student),學(xué)生和班級之間是多對一
    關(guān)系。
    具體的關(guān)聯(lián)實(shí)現(xiàn)源代碼如下:
    Student.hbm.xml
    ...
    <hibernate-mapping>
     <class name="model.Student" table="student">
      <id name="id" unsaved-value="null">
       <generator class="uuid.hex"/>
      </id>
      <property name="name" type="string'/>
      <many-to-one name="team"
        class="model.Team"
        column="team_id" <!--和team發(fā)生關(guān)聯(lián)的列名-->
        cascade="none"
        fetch="join"
      />

     </class>
    </hibernate-mapping>

    <many-to-one>標(biāo)簽具有column屬性,column屬性總是和關(guān)聯(lián)類(對于Student來說,關(guān)聯(lián)類
    是Team)的主鍵id 相對應(yīng),因此Hibernate會根據(jù)student表中的team_id,根據(jù)Team表中設(shè)置
    的id列(一般情況列名也叫id),取出team.id=student.team_id的記錄,構(gòu)造成Team對象返
    回給Student類。

    Team.hbm.xml
    ...
    <hibernate-mapping>
     <class name="model.Team" table="team" lazy="true">
      <id name="id" unsaved-value="null">
       <generator class="uuid.hex"/>
      </id>
      <property name="teamName" type="string"/>
      <set name="students" cascade="save-update" lazy="true" inverse="true">
       <key column="team_id"/>
       <one-to-many class="model.Student"/>
      </set>

     </class>
    </hibernate-mapping>

    Team對Student是一對多關(guān)系,一對多具有<key column=""/>屬性,key標(biāo)簽總是和本身類的主鍵
    相對應(yīng)。在取得Team對象時,通過Team的主鍵id與Student表中的team_id進(jìn)行匹配,如果
    team.id=student.team_id,則認(rèn)為此學(xué)生是本班級的,于是加載學(xué)生,把學(xué)生對象加入Team
    對象的學(xué)生集合。

    設(shè)置inverse標(biāo)簽
      由于在Team.hbm.xml中設(shè)置了inverse="true",Team和Student之間的關(guān)系轉(zhuǎn)由Student來維護(hù)
    因此,當(dāng)Team掌握維護(hù)權(quán)時(inverse="false"或者默認(rèn)狀態(tài)),它負(fù)責(zé)將自己的id告訴Student
    ,然后Hibernate發(fā)送update語句去更新記錄。但現(xiàn)在設(shè)置了inverse="true"之后,維護(hù)權(quán)在
    Student手中,于是Hibernate不再發(fā)送update語句,而由Student自動去取得team_id,而這個
    動作其實(shí)就是完成一個“學(xué)生添加班級”動作,也就是語句newStu.setTeam(team)。



    posted on 2007-12-29 14:32 Ke 閱讀(2533) 評論(3)  編輯  收藏 所屬分類: hibernate

    FeedBack:
    # re: 一對多、多對一關(guān)聯(lián)關(guān)系的使用[未登錄] 2008-02-16 09:46 javaboy
    頂 ! 寫的太經(jīng)典了 !   回復(fù)  更多評論
      
    # re: 一對多、多對一關(guān)聯(lián)關(guān)系的使用 2008-09-23 09:40 fyx
    寫的挺好的   回復(fù)  更多評論
      
    # re: 一對多、多對一關(guān)聯(lián)關(guān)系的使用 2008-09-24 15:21 ww13515517287@126.com
    不錯啊
    通俗易懂
    謝了  回復(fù)  更多評論
      
    主站蜘蛛池模板: a级日本高清免费看| 精品日韩亚洲AV无码一区二区三区| 亚洲成a人片77777kkkk| 亚洲国产综合无码一区| 国产一区二区免费在线| 蜜臀91精品国产免费观看| 毛片免费观看的视频在线| 国产91久久久久久久免费| 亚洲大片免费观看| 日韩在线观看视频免费| 久久久久免费看黄A片APP| 亚洲第一页在线观看| 18女人腿打开无遮掩免费| 久久久久久久久亚洲| 免费人成在线观看视频高潮 | 免费无码看av的网站| 国产成人精品亚洲2020| 大地资源免费更新在线播放| 亚洲三级中文字幕| 成人免费无毒在线观看网站 | 最近中文字幕完整版免费高清| 亚洲Av熟妇高潮30p| 亚洲网站免费观看| 亚洲精品av无码喷奶水糖心| 日韩中文字幕在线免费观看| 免费大片黄在线观看| 久久久久亚洲AV成人网| 99精品视频在线观看免费| 亚洲网站在线观看| 人妻视频一区二区三区免费| 美女露隐私全部免费直播| 国产精品亚洲一区二区三区在线 | 国产亚洲精品免费视频播放| 免费在线看黄的网站| 中文字幕在线观看亚洲日韩| 尤物永久免费AV无码网站| 热久久这里是精品6免费观看| 久久丫精品国产亚洲av不卡| 国产精品极品美女免费观看| 你是我的城池营垒免费观看完整版 | 亚洲 自拍 另类小说综合图区|