日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate关联关系映射-----双向一对多/多对一映射配置

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate关联关系映射-----双向一对多/多对一映射配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 轉自:http://blog.csdn.net/yifei12315/article/details/6985194
  • ///??
  • Hibernate:??
  • ????///??
  • ????雙向關聯就是有“一對多”和“多對一”兩個關聯組合而成德,在雙向關聯的兩端都知道對方是誰。??
  • ??
  • ????下面就開始演示這種關聯。??
  • ??
  • ????首先定義我們需要使用的POJO對象。??
  • ??
  • ????public?class?Member??
  • ????{??
  • ????????private?String?id;???
  • ????????private?String?name;???
  • ????????private?Integer?age;???
  • ????????private?Set<Order>?orders?=?new?HashSet<Order>();//我知道Order對象??
  • ????????……??
  • ????}??
  • ??
  • ????public?class?Order??
  • ????{??
  • ????????private?Integer?id;???
  • ????????private?String?name;???
  • ????????private?String?num;???
  • ????????private?Member?member;//我知道Member對象??
  • ????????……??
  • ????}??
  • ??
  • ????兩個POJO對應的映射文件分別為Member.hbm.xml和Order.hbm.xml。??
  • ??
  • ????Member.hbm.xml??
  • ??
  • ????<hibernate-mapping?package="org.louis.domain">???
  • ????????<class?name="Member"?table="TEST_MEMBER">??
  • ????????????<id?name="id"?column="ID">???
  • ????????????????<generator?class="uuid.hex"></generator>???
  • ????????????</id>???
  • ????????????<property?name="age"?column="AGE"></property>???
  • ????????????<property?name="name"?column="NAME"></property>???
  • ????????????<set?name="orders"?cascade="all"?inverse="true">??
  • ????????????????<!--設置inverse=”true”表示Member不在作為主控方,就是說不再由Member來維持關聯關系,??
  • ????????????????而有Order方來維持關聯關系,這樣Order在持久化的時候會主動去獲取Member的主鍵值來作為自己??
  • ????????????????的外鍵值。?在one-to-manay關聯關系中,一般將manay端設置為主控方(inverse=”false”),??
  • ????????????????這樣將有助于改善性能。默認情況下inverse=”false”?-->???
  • ????????????????<key?column="MEMBER_ID"></key>???
  • ????????????????<one-to-many?class="Order"/>???
  • ????????????</set>??
  • ????????</class>???
  • ????</hibernate-mapping>??
  • ??
  • ????Order.hbm.xml??
  • ??
  • ????<hibernate-mapping?package="org.louis.domain">???
  • ????????<class?name="Order"?table="TEST_ORDER">???
  • ????????????<id?name="id"?column="ID">???
  • ????????????????<generator?class="native"></generator>???
  • ????????????</id>???
  • ????????????<property?name="name"?column="NAME"></property>???
  • ????????????<property?name="num"?column="NUM"></property>???
  • ????????????<many-to-one?name="member"?class="Member"?column="MEMBER_ID"></many-to-one>??
  • ????</hibernate-mapping>??
  • ??
  • ????下面我們來進行測試。??
  • ??
  • ????a、插入數據??
  • ??
  • ????public?void?insert()??
  • ????{???
  • ????????Session?session?=?HibernateSessionFactory.getSessionFactory().getCurrentSession();???
  • ????????session.beginTransaction();???
  • ????????Member?m?=?new?Member();???
  • ????????m.setAge(24);???
  • ????????m.setName("Louis");??
  • ??
  • ????????Order?order?=?new?Order();??
  • ????????order.setName("order?1");??
  • ????????order.setNum("order?num?1");??
  • ????????order.setMember(m);??
  • ????????m.getOrders().add(order);??
  • ??
  • ????????session.save(m);???
  • ????????session.getTransaction().commit();???
  • ????}??
  • ??
  • ????查看Hibernate在后臺使用的SQL語句如下:??
  • ??
  • ????Hibernate:???
  • ????????insert???
  • ????????into???
  • ????????????TEST_MEMBER???
  • ????????????(AGE,?NAME,?ID)???
  • ????????values???
  • ????????????(?,??,??)???
  • ????Hibernate:???
  • ????????insert???
  • ????????into???
  • ????????????TEST_ORDER???
  • ????????????(NAME,?NUM,?MEMBER_ID)???
  • ????????values???
  • ????????????(?,??,??)??
  • ??
  • ????僅僅就兩條語句,明顯比單向關聯的時候少了一條更新語句(把Order的外鍵進行更新為Menber的主鍵值)。??
  • ??
  • ????b、加載數據??
  • ??????
  • ????和單向關聯的區別在于,如果加載的是Order對象,那么它也知道和它關聯的對象。??
  • ??
  • ????c、刪除數據??
  • ??????
  • ????刪除數據和單向關聯時的刪除數據的區別在于,對Member及它的關聯對象Order加載后,不需要在更新Order的外鍵為NULL,而是緊跟著逐條刪除Order,最后刪除Member。??
  • ? ? ??
  • 轉載于:https://www.cnblogs.com/springside4/archive/2012/05/02/2481154.html

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

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

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