日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Hibernate 关联映射 之 多对多 关联(一)

發布時間:2025/6/15 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate 关联映射 之 多对多 关联(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、了解幾個知識點:

一、一般的設計中,多對多關聯映射,需要一個中間表
二、Hibernate會自動生成中間表
三、Hibernate使用many-to-many標簽來表示多對多的關聯
四、多對多的關聯映射,在實體類中,跟一對多一樣,也是用集合來表示的

2、示例代碼(用戶和角色之間的關系是多對多)

用戶的示例代碼:

[java] view plain copy print?
  • public?class?User?{??
  • ??
  • ????private?int?id;??
  • ????private?String?name;??
  • ????private?String?password;??
  • ????private?Set<Role>?roles;??
  • [html] view plain copy print?
  • <hibernate-mapping>??
  • ????<class?name="com.shangxuetang.User"?table="t_user">??
  • ????????<id?name="id">??
  • ????????????<generator?class="native"/>??
  • ????????</id>??
  • ????????<property?name="name"></property>??
  • ????????<property?name="password"></property>??
  • ????????<set?name="roles"?table="t_user_group">??
  • ???????????<key?column="userId"></key>??
  • ???????????<many-to-many?class="com.shangxuetang.Role"?column="roleId"></many-to-many>??
  • ????????</set>??
  • ????</class>??
  • </hibernate-mapping>??
  • 需要注意的是:映射文件中屬性table是必須有的;many-to-many 中屬性column是必須有的(中間映射表中,關聯目標表的關聯字段),class是必須有的(關聯目標類)

    [java] view plain copy print?
  • public?class?Role?{??
  • ????private?int?id;??
  • ????private?String?name;??
  • ????private?Set<User>?users;??
  • [html] view plain copy print?
  • <hibernate-mapping>??
  • ????<class?name="com.shangxuetang.Role"?table="t_role">??
  • ????????<id?name="id">??
  • ????????????<generator?class="native"/>??
  • ????????</id>??
  • ????????<property?name="name"></property>??
  • ????????<set?name="users"?table="t_user_group">??
  • ????????????<key?column="roleId"></key>??
  • ????????????<many-to-many?class="com.shangxuetang.User"?column="userId"></many-to-many>??
  • ????????</set>??
  • ????</class>??
  • </hibernate-mapping>??

  • 測試示例代碼:

    [java] view plain copy print?
  • public?void??testManytoMany()?{??
  • ????????Session?session?=?HibernateUtil.getSession();??
  • ????????try?{??
  • ????????????session.beginTransaction();??
  • ??????????????
  • ????????????User?u1?=?new?User("zhangsan");??
  • ????????????session.save(u1);??
  • ????????????User?u2?=?new?User("lisi");??
  • ????????????session.save(u2);??
  • ??????????????
  • ????????????Role?r1?=?new?Role("管理員");??
  • ????????????session.save(r1);??
  • ????????????Role?r2?=?new?Role("普通用戶");??
  • ????????????session.save(r2);??
  • ????????????Role?r3?=?new?Role("VIP用戶");??
  • ????????????session.save(r3);??
  • ??????????????
  • ????????????u1.addRole(r1).addRole(r3);??
  • ????????????u2.addRole(r2);??
  • ??????????????
  • ????????????r1.addUser(u2);??
  • ??????????????
  • ????????????session.getTransaction().commit();??
  • ????????}catch(Exception?e)?{??
  • ????????????e.printStackTrace();??
  • ????????????session.getTransaction().rollback();??
  • ????????}finally?{??
  • ????????????session.close();??
  • ????????}??
  • ????}??

  • 總結

    以上是生活随笔為你收集整理的Hibernate 关联映射 之 多对多 关联(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。