程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> [原創]關於Hibernate中的級聯操作以及懶加載,原創hibernate加載

[原創]關於Hibernate中的級聯操作以及懶加載,原創hibernate加載

編輯:JAVA綜合教程

[原創]關於Hibernate中的級聯操作以及懶加載,原創hibernate加載


Hibernate:

級聯操作

一.簡單的介紹

cascade和inverse (Employee – Department)

l Casade用來說明當對主對象進行某種操作時是否對其關聯的從對象也作類似的操作,常用的cascade:

none,all,save-update,delete, lock,refresh,evict,replicate,persist,

merge,delete-orphan(one-to-many)。一般對many-to-one,many-to-many不設置級聯,在<one-to-one>和<one-to-many>中設置級聯。

l inverse表“是否放棄維護關聯關系”(在Java裡兩個對象產生關聯時,對數據庫表的影響),在one-to-many和many-to-many的集合定義中使用,inverse=”true”表示該對象不維護關聯關系;該屬性的值一般在使用有序集合時設置成false(注意hibernate的缺省值是false)。

one-to-many維護關聯關系就是更新外鍵。many-to-many維護關聯關系就是在中間表增減記錄。

注: 配置成one-to-one的對象不維護關聯關系

二,屬性的解析
延遲加載:在只查詢單表就可以滿足要求,再查詢關聯信息,為了提高數據庫查詢
性能,使用延遲加載。
class元素的lazy屬性設定為true,表示延遲加載,如果lazy設為false,則
表示立即加載。以下對這二點進行說明。
立即加載:表示Hibernate在從數據庫中取得數據組裝好一個對象(如學生1)後,
會立即再從數據庫取得數據組裝此對象所關聯的對象(如學生證1)。
延遲加載:表示Hibernate在從數據庫中取得數據組裝好一個對象(如學生1)後,
不會立即再從數據庫中取得數據組裝此對象所關聯的對象(如學生1),
而是等到需要時,才會從數據庫取得數據組裝此關聯對象。
<one-to-one>元素的cascade屬性表明操作是否從父對象級聯到被關聯的對象, 它
的取得可以是以下幾種:
none:在保存,刪除或修改當前對象時,不對其附屬對象(關聯對象)進行級聯
操作。它是默認值。
save-update:在保存,更新當前對象時,級聯保存,更新附屬對象(臨時對象,
游離對象)。
delete:在刪除當前對象時,級聯刪除附屬對象。
all:所有情況下均進行級聯操作,即包含save-update和delete操作。
delete-orphan:刪除和當前對象解除關系的附屬對象。
<one-to-one>元素的fetch屬性的可選值是join和select,默認是select。
當fetch屬性設定為join時,表示連接抓取(Join fetching):Hibernate通過
在Select語句中使用outer join(外連接)來獲得對象的關聯實例或者關聯集合。
當fetch屬性設定為select時,表示查詢抓取(Select fetching):需要另外發
送一條Select語句抓取當前對象的關聯實體或集合。

三。代碼練習
<!-- 一對多的情況 -->
<set name="emps" cascade="save-update">
<key column="depart_id"/>
<one-to-many class="Employee"/>
</set>

<set name="students" table="taacher_student" inverse="true"><!-- table是用來指定中間表的屬性 -->
<key column="teacher_id"></key><!-- 查找教師id時,鏈接中間表表的teacher_id -->
<many-to-many class="Student" column="student_id"></many-to-many>
</set>

作者:little飛 出處:http://www.cnblogs.com/little-fly/ 歡迎轉載 也請保留這段聲明 謝謝!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved