Hibernate數據加載方式有以下幾種。
一、即時加載(Immediate Loading)
當實體加載完成後,立即加載與實體相關聯的數據。即當實體加載完成後,Hibernate自動立即讀取與實體相關聯的數據,並且填充到實體對應的屬性中。這種加載通常有多條select語句,即select實體數據後,同時select實體相關聯的數據。
二、延遲加載(Lazy Loading)
實體加載時,其關聯數據並不是立即讀取,而是當關聯數據第一次被訪問時再進行讀取,這種加載方式在第一次訪問關聯數據時,必須在同一個session中,否則會報session已關閉錯誤。
延遲加載通過在實體的hbm文件中的對應屬性中設定lazy="true"實現。Hibernate3默認的加載方式是延遲加載。即默認 lazy="true",主要用於one-to-many場合。
三、預先加載(Eager Loading)
預先加載時,實體及關聯對象同時讀取,與即時加載類似,但是預先加載是使用"outer-join"通過一條select語句同時讀取。
注意:當實體間關聯比較複雜時,比如多層關聯,Hibernate生成的"outer join SQL"可能過於複雜,此時可以通過設定全局變量(hibernate.max_fetch_depth)限定join的層次(一般設定爲5層)。
四、批量加載(Batch Loading)
對於即時和延遲加載,可以採用批量加載進行優化。
批量加載就是通過批量提交多個限定條件,一次多個限定條件的數據讀取。同時在實體映射文件中的class節點,通過配置"batch-size"參數打開批量加載機制,並限定每次批量加載數據的數量,一般來說該值<10較合理。
比如:
select * from test where id=1;
select * from test where id=2;
我們可以整合成一條語句:
select * from test where id=1 ro id=2;
這就是所謂的批量加載機制。
Hibernate數據加載方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
JPA 、 Hibernate 註解
yangyangisse
2018-08-27 20:03:00
Hibernate的關聯映射
entomb
2018-08-27 20:02:04
Hibernate延時加載
iteye_11720
2018-08-27 18:56:16
Hibernate持久化對象的狀態
明眸若雪
2018-08-27 18:48:13
Hibernate註解方式單表操作
shenshuibomb
2018-08-27 18:07:30
Hibernate單表操作
shenshuibomb
2018-08-27 18:06:51
hibernate註解方式實現一對多映射
shenshuibomb
2018-08-27 18:06:51
Hibernate一對多映射
shenshuibomb
2018-08-27 18:06:50
A simple Hibernate sample
shenshuibomb
2018-08-27 18:06:50
Hibernate中get和load的一點點區別。
shenshuibomb
2018-08-27 18:06:49
在Hibernate中配置一對多連接表
a157775541
2018-08-27 18:03:52
在Hibernate中配置多對多連接表
a157775541
2018-08-27 18:03:50
Hibernate 映射關係 ---One2Many單向關聯
qq_28059559
2018-08-27 17:53:33
Hibernate 映射關係 ---Many2Many 單向關聯
qq_28059559
2018-08-27 17:53:33
Hibernate 映射關係 ---One2Many 雙向關聯
qq_28059559
2018-08-27 17:53:22
最新文章