<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年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(14)

    隨筆檔案(6)

    文章分類(467)

    文章檔案(423)

    相冊

    收藏夾(18)

    JAVA

    搜索

    •  

    積分與排名

    • 積分 - 825479
    • 排名 - 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 閱讀(2528) 評論(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
    不錯啊
    通俗易懂
    謝了  回復  更多評論
      
    主站蜘蛛池模板: 久久久久久久久亚洲| 中文字幕在线亚洲精品| 亚洲youjizz| 在线观看H网址免费入口| 久久精品国产亚洲AV电影| 久久久久久AV无码免费网站下载 | 亚洲中文字幕无码久久精品1| 黄页网站在线观看免费| 国产在线ts人妖免费视频| 亚洲日韩AV一区二区三区四区 | 在线观看亚洲视频| 四虎免费永久在线播放| 青娱乐在线视频免费观看| 亚洲精品成人网久久久久久| 国产精品成人免费观看| 国精无码欧精品亚洲一区| 久热免费在线视频| 亚洲sss综合天堂久久久| 日韩高清免费在线观看| 日韩少妇内射免费播放| 亚洲AV无码专区国产乱码电影 | 一区二区视频免费观看| 亚洲视频在线精品| 13小箩利洗澡无码视频网站免费 | 免费a级毛片网站| 中文字幕乱码系列免费| 久久亚洲精品成人无码网站| 最近的中文字幕大全免费版| 男女超爽视频免费播放| 日本亚洲成高清一区二区三区| 97精品免费视频| 亚洲AV无码专区亚洲AV桃| 亚洲综合色婷婷七月丁香| 国产国产人免费视频成69堂| 99亚洲精品卡2卡三卡4卡2卡| 亚洲区小说区图片区QVOD| 99无码人妻一区二区三区免费 | 免费国产99久久久香蕉| 亚洲免费福利在线视频| 在线观看国产区亚洲一区成人 | 99久久免费国产精品特黄|