<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

    搜索

    •  

    積分與排名

    • 積分 - 829297
    • 排名 - 49

    最新評論

    閱讀排行榜

    評論排行榜

      一對多和多對一關系在實際生活中是非常常見的。在編寫程序時,有兩種實現的形式
    分別是單向關聯和雙向關聯。

    單向關聯

    雙向關聯

      本節中使用到兩個類,分別是班級(Team)和學生(Student),學生和班級之間是多對一
    關系。
    具體的關聯實現源代碼如下:
    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發生關聯的列名-->
        cascade="none"
        fetch="join"
      />

     </class>
    </hibernate-mapping>

    <many-to-one>標簽具有column屬性,column屬性總是和關聯類(對于Student來說,關聯類
    是Team)的主鍵id 相對應,因此Hibernate會根據student表中的team_id,根據Team表中設置
    的id列(一般情況列名也叫id),取出team.id=student.team_id的記錄,構造成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是一對多關系,一對多具有<key column=""/>屬性,key標簽總是和本身類的主鍵
    相對應。在取得Team對象時,通過Team的主鍵id與Student表中的team_id進行匹配,如果
    team.id=student.team_id,則認為此學生是本班級的,于是加載學生,把學生對象加入Team
    對象的學生集合。

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



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

    FeedBack:
    # re: 一對多、多對一關聯關系的使用[未登錄] 2008-02-16 09:46 javaboy
    頂 ! 寫的太經典了 !   回復  更多評論
      
    # re: 一對多、多對一關聯關系的使用 2008-09-23 09:40 fyx
    寫的挺好的   回復  更多評論
      
    # re: 一對多、多對一關聯關系的使用 2008-09-24 15:21 ww13515517287@126.com
    不錯啊
    通俗易懂
    謝了  回復  更多評論
      
    主站蜘蛛池模板: 美女网站在线观看视频免费的 | 精品国产亚洲AV麻豆| 97公开免费视频| 亚洲资源在线视频| 久久久久久AV无码免费网站| 亚洲av无码成h人动漫无遮挡| 在线观看免费无码视频| 亚洲国产精品VA在线看黑人 | 免费A级毛片无码A∨男男| 亚洲第一街区偷拍街拍| 国产做床爱无遮挡免费视频| 亚洲a无码综合a国产av中文| 亚洲国产精品丝袜在线观看| 国产亚洲男人的天堂在线观看| 免费A级毛片无码A∨男男| av午夜福利一片免费看久久| 亚洲精品乱码久久久久久自慰 | 免费A级毛片无码无遮挡内射| 国产成人精品日本亚洲直接| 成年女人免费视频播放77777 | 久久国产福利免费| 亚洲VA中文字幕无码毛片| 最近免费中文字幕大全免费| 亚洲av乱码一区二区三区香蕉| 最新仑乱免费视频| 国产亚洲精品AAAA片APP| 亚洲第一永久AV网站久久精品男人的天堂AV | 亚洲日韩精品无码一区二区三区| 免费看黄的成人APP| 亚洲国产av美女网站| 国产成人精品123区免费视频| 一本久久A久久免费精品不卡| 亚洲AV天天做在线观看| 最近最新MV在线观看免费高清 | 中文字幕免费观看全部电影| 亚洲人成影院在线| 国产精品四虎在线观看免费| 热99RE久久精品这里都是精品免费| 亚洲男人的天堂在线| 内射无码专区久久亚洲| 91av免费观看|