偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Hibernate使用批量抓取技巧

開發(fā) 后端
Hibernate可以充分有效的使用Hibernate批量抓取,也就是說,如果僅一個訪問代理(或集合),那么Hibernate將不載入其他未實例化的代理。

大家都知道Hibernate可以充分有效的使用批量抓取,也就是說,如果僅一個訪問代理(或集合),那么Hibernate將不載入其他未實例化的代理。

Hibernate批量抓取是延遲查詢抓取的優(yōu)化方案,你可以在兩種Hibernate批量抓取方案之間進(jìn)行選擇:在類級別和集合級別。

類/實體級別的批量抓取很容易理解。假設(shè)你在運行時將需要面對下面的問題:你在一個Session中載入了25個Cat實例,每個Cat實例都擁有一個引用成員owner, 其指向Person,而Person類是代理,同時lazy="true"。

如果你必須遍歷整個cats集合,對每個元素調(diào)用getOwner()方法,Hibernate將會默認(rèn)的執(zhí)行25次SELECT查詢,得到其owner的代理對象。這時,你可以通過在映射文件的Person屬性,顯式聲明batch-size,改變其行為:

  1. <class name="Person" batch-size="10">...</class> 

隨之,Hibernate將只需要執(zhí)行三次查詢,分別為10、10、 5。

你也可以在集合級別定義批量抓取。例如,如果每個Person都擁有一個延遲載入的Cats集合,現(xiàn)在,Sesssion中載入了10個person對象,遍歷person集合將會引起10次SELECT查詢,每次查詢都會調(diào)用getCats()方法。如果你在Person的映射定義部分,允許對cats批量抓取, 那么,Hibernate將可以預(yù)先抓取整個集合。

請看例子:

  1. <class name="Person"> 
  2.     <set name="cats" batch-size="3"> 
  3.         ...  
  4.     </set> 
  5. </class> 

如果整個的batch-size是3(筆誤?),那么Hibernate將會分四次執(zhí)行SELECT查詢,按照3、3、3、1的大小分別載入數(shù)據(jù)。這里的每次載入的數(shù)據(jù)量還具體依賴于當(dāng)前Session中未實例化集合的個數(shù)。

如果你的模型中有嵌套的樹狀結(jié)構(gòu),例如典型的帳單-原料結(jié)構(gòu)(bill-of-materials pattern),集合的Hibernate批量抓取是非常有用的。(盡管在更多情況下對樹進(jìn)行讀取時,嵌套集合(nested set)或原料路徑(materialized path)(××) 是更好的解決方法。)

【編輯推薦】

  1. 簡述Hibernate中加載并存儲對象
  2. Hibernate傳播性持久化攻略
  3. 深入了解Hibernate自動狀態(tài)檢測
  4. 教你如何在Hibernate中實例化集合和代理
  5. Hinerbate單端關(guān)聯(lián)代理頗析
責(zé)任編輯:仲衡 來源: TechTarget
相關(guān)推薦

2009-09-24 14:28:23

Hibernate抓取

2009-09-24 09:25:10

Hibernate批量

2009-09-24 09:45:23

Hibernate批量

2009-06-16 16:39:49

Hibernate性能

2009-09-25 11:34:54

Hibernate處理Hibernate批量

2009-09-27 14:33:01

Hibernate批量

2009-06-18 11:12:42

Hibernate S優(yōu)化

2009-06-03 10:02:53

Hibernate批量刪除

2009-06-12 15:09:01

Hibernate優(yōu)化

2009-12-02 15:50:41

PHP抓取網(wǎng)頁內(nèi)容

2010-02-23 09:33:39

Hibernate批量Hibernate批量

2009-06-16 16:27:22

Hibernate優(yōu)化

2009-06-12 14:44:30

Hibernate A批量更新

2009-06-30 16:52:30

DetchedCrit

2009-09-21 17:23:49

Hibernate使用

2009-09-23 10:28:49

使用Hibernate

2009-06-16 16:10:59

Hibernate性能

2009-09-28 13:43:28

使用Hibernate

2009-09-29 16:48:42

Hibernate J

2009-09-23 10:14:10

Hibernate使用
點贊
收藏

51CTO技術(shù)棧公眾號