<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ù)  更多評論
      
    主站蜘蛛池模板: 亚洲人成电影网站免费| 美女视频黄是免费的网址| 亚洲Av无码精品色午夜| 久久免费看黄a级毛片 | 成人亚洲性情网站WWW在线观看| 韩国免费a级作爱片无码| 亚洲五月激情综合图片区| 巨胸喷奶水视频www网免费| 男女猛烈激情xx00免费视频| 亚洲AV成人一区二区三区AV| 成人超污免费网站在线看| 四虎国产精品成人免费久久| 亚洲嫩模在线观看| 免费高清在线爱做视频| 999zyz**站免费毛片| 亚洲激情视频图片| 国产亚洲精品拍拍拍拍拍 | 2022中文字字幕久亚洲| 日本免费xxxx色视频| 一级毛片免费全部播放| 亚洲春黄在线观看| 亚洲中文字幕无码专区| 野花高清在线观看免费完整版中文| 九九综合VA免费看| 色偷偷亚洲女人天堂观看欧| 中文字幕亚洲综合久久男男| 一区二区无码免费视频网站| a一级爱做片免费| 亚洲最大中文字幕无码网站 | 亚洲精品视频观看| 又黄又爽的视频免费看| 国产h肉在线视频免费观看| 中国好声音第二季免费播放| 亚洲一区二区三区成人网站 | 亚洲人成依人成综合网| 亚洲精品WWW久久久久久 | 免费一级国产生活片| 波多野结衣免费在线观看| 在线观看人成视频免费无遮挡 | 亚洲一区二区三区在线观看精品中文| 最近2019中文字幕mv免费看|