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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時(shí)間:2025/5/22 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate关联关系映射-----双向一对多/多对一映射配置 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 轉(zhuǎn)自:http://blog.csdn.net/yifei12315/article/details/6985194
  • ///??
  • Hibernate:??
  • ????///??
  • ????雙向關(guān)聯(lián)就是有“一對(duì)多”和“多對(duì)一”兩個(gè)關(guān)聯(lián)組合而成德,在雙向關(guān)聯(lián)的兩端都知道對(duì)方是誰。??
  • ??
  • ????下面就開始演示這種關(guān)聯(lián)。??
  • ??
  • ????首先定義我們需要使用的POJO對(duì)象。??
  • ??
  • ????public?class?Member??
  • ????{??
  • ????????private?String?id;???
  • ????????private?String?name;???
  • ????????private?Integer?age;???
  • ????????private?Set<Order>?orders?=?new?HashSet<Order>();//我知道Order對(duì)象??
  • ????????……??
  • ????}??
  • ??
  • ????public?class?Order??
  • ????{??
  • ????????private?Integer?id;???
  • ????????private?String?name;???
  • ????????private?String?num;???
  • ????????private?Member?member;//我知道Member對(duì)象??
  • ????????……??
  • ????}??
  • ??
  • ????兩個(gè)POJO對(duì)應(yīng)的映射文件分別為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">??
  • ????????????????<!--設(shè)置inverse=”true”表示Member不在作為主控方,就是說不再由Member來維持關(guān)聯(lián)關(guān)系,??
  • ????????????????而有Order方來維持關(guān)聯(lián)關(guān)系,這樣Order在持久化的時(shí)候會(huì)主動(dòng)去獲取Member的主鍵值來作為自己??
  • ????????????????的外鍵值。?在one-to-manay關(guān)聯(lián)關(guān)系中,一般將manay端設(shè)置為主控方(inverse=”false”),??
  • ????????????????這樣將有助于改善性能。默認(rèn)情況下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>??
  • ??
  • ????下面我們來進(jìn)行測(cè)試。??
  • ??
  • ????a、插入數(shù)據(jù)??
  • ??
  • ????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在后臺(tái)使用的SQL語句如下:??
  • ??
  • ????Hibernate:???
  • ????????insert???
  • ????????into???
  • ????????????TEST_MEMBER???
  • ????????????(AGE,?NAME,?ID)???
  • ????????values???
  • ????????????(?,??,??)???
  • ????Hibernate:???
  • ????????insert???
  • ????????into???
  • ????????????TEST_ORDER???
  • ????????????(NAME,?NUM,?MEMBER_ID)???
  • ????????values???
  • ????????????(?,??,??)??
  • ??
  • ????僅僅就兩條語句,明顯比單向關(guān)聯(lián)的時(shí)候少了一條更新語句(把Order的外鍵進(jìn)行更新為Menber的主鍵值)。??
  • ??
  • ????b、加載數(shù)據(jù)??
  • ??????
  • ????和單向關(guān)聯(lián)的區(qū)別在于,如果加載的是Order對(duì)象,那么它也知道和它關(guān)聯(lián)的對(duì)象。??
  • ??
  • ????c、刪除數(shù)據(jù)??
  • ??????
  • ????刪除數(shù)據(jù)和單向關(guān)聯(lián)時(shí)的刪除數(shù)據(jù)的區(qū)別在于,對(duì)Member及它的關(guān)聯(lián)對(duì)象Order加載后,不需要在更新Order的外鍵為NULL,而是緊跟著逐條刪除Order,最后刪除Member。??
  • ? ? ??
  • 轉(zhuǎn)載于:https://www.cnblogs.com/springside4/archive/2012/05/02/2481154.html

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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。