自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hibernate數(shù)據(jù)加載方式淺析

開發(fā) 后端
本文向您介紹Hibernate數(shù)據(jù)加載的方式,包括即時(shí)加載、延遲加載、預(yù)先加載和批量加載等。

Hibernate數(shù)據(jù)加載支持以下幾種方式:

◆即時(shí)加載(Immediate Loading)

◆當(dāng)實(shí)體加載完成后,立即加載其關(guān)聯(lián)數(shù)據(jù)

◆延遲加載(Lazy Loading)

◆實(shí)體加載時(shí),其關(guān)聯(lián)數(shù)據(jù)并非馬上獲取,而是當(dāng)關(guān)聯(lián)數(shù)據(jù)第一次被訪問時(shí)再進(jìn)行讀取.

◆預(yù)先加載(Eager Loading),預(yù)先加載時(shí),實(shí)體及其關(guān)聯(lián)對象同時(shí)讀取,這與即時(shí)加載類似,不過實(shí)體及其關(guān)聯(lián)數(shù)據(jù)是通過一條SQL語句(基于外連接[outer join])同時(shí)讀取.

◆批量加載(Batch Loading),對于即時(shí)加載與延遲加載,可以采用批量加載方式進(jìn)行性能上的優(yōu)化

即時(shí)加載(Immediate Loading)

配置如下:

  1. "address"    
  2.         table="t_address"    
  3.         inverse="true"    
  4.         cascade="none"    
  5.         sort="unsorted"    
  6.         lazy="false">     
  7.         "user_id">     
  8.              
  9.         class="com.hpjianhua.hibernate.Address"/>     
  10.        

即時(shí)Hibernate數(shù)據(jù)加載的基本原理:當(dāng)宿主實(shí)體(關(guān)聯(lián)主體)加載時(shí),Hibernate會馬上自動(dòng)讀取其關(guān)聯(lián)的數(shù)據(jù)并完成關(guān)聯(lián)屬性的填充.

延遲加載(Lazy Loading)

配置如下:

  1. "address"    
  2.     table="t_address"    
  3.     inverse="true"    
  4.     cascade="none"    
  5.     sort="unsorted"    
  6.     lazy="true">     
  7.     "user_id">     
  8.          
  9.     class="com.hpjianhua.hibernate.Address"/>     
  10.     

預(yù)先加載(Eager Loading)

預(yù)先Hibernate數(shù)據(jù)加載即通過outer-join完成關(guān)聯(lián)數(shù)據(jù)的加載,這樣,通過一條SQL語句即可完成實(shí)體及其關(guān)聯(lián)數(shù)據(jù)的讀取操作,相對即時(shí)讀取的兩條甚至若干條SQL而言,無疑這種機(jī)制在性能上能帶來更多的提升.

批量加載(Batch Loading)

批量加載,簡而言之,就是通過批量Hibernate數(shù)據(jù)加載提交多個(gè) 限定條件,一次完成多個(gè)數(shù)據(jù)的讀取.如對于以下形式的SQL:

Select from User where id=1;

Select from User where id=3;

我們可以整合成一條SQL語句完成同樣的功能:

Select from User where id=1 or id=3;

這就是所謂的批量Hibernate數(shù)據(jù)加載機(jī)制,如果使用了批量加載機(jī)制,Hibernate在進(jìn)行數(shù)據(jù)查詢操作前,會自動(dòng)在當(dāng)前的Session中尋找是否還有其他同類型的待加載的數(shù)據(jù),如果有,則將其查詢條件合并到當(dāng)前的select語句中一并提交,這樣,通過一次數(shù)據(jù)庫操作即完成了多個(gè)讀取任務(wù).

在實(shí)體配置的class節(jié)點(diǎn)中,我們可以通過batch-size參數(shù)打開批量加載機(jī)制,并限定每次批量加載的數(shù)量:

一般來說,batch-size應(yīng)該設(shè)定為一個(gè)合理的小型數(shù)值(<10).

 

【編輯推薦】

  1. Hibernate 刪除出現(xiàn)異常的解決方案
  2. 各種Hibernate保存方式的區(qū)別
  3. 對Hibernate繼承映射的講解
  4. 有關(guān)Hibernate優(yōu)點(diǎn)和缺點(diǎn)的闡述
  5. 作為持久層的Hibernate優(yōu)點(diǎn)及缺點(diǎn)
責(zé)任編輯:佚名 來源: JavaEye
相關(guān)推薦

2009-09-24 11:41:46

Hibernate延遲

2009-09-25 10:49:25

Hibernate加載

2009-06-25 17:24:06

Hibernate主鍵

2009-09-28 09:35:10

Hibernate實(shí)現(xiàn)實(shí)體對象延遲加載

2009-09-28 17:23:51

Hibernate E

2009-09-21 17:23:49

Hibernate使用

2009-09-22 13:09:06

Hibernateorm框架

2009-09-21 18:13:11

Hibernate S

2009-09-23 17:28:55

Hibernate C

2009-09-23 10:19:08

Hibernate分頁

2009-09-21 12:50:34

Hibernate架構(gòu)

2009-09-25 14:12:16

Hibernate繼承

2009-09-22 17:32:38

Hibernate A

2009-09-22 10:23:15

Hibernate配置

2009-09-23 11:07:11

Hibernate基礎(chǔ)

2009-09-23 13:26:10

Hibernate對象

2009-09-24 10:07:21

Hibernate M

2009-09-22 15:26:30

Hibernate多表

2009-09-29 16:11:45

Hibernate實(shí)現(xiàn)

2009-06-17 11:18:02

Hibernate延遲
點(diǎn)贊
收藏

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