天天看點

《精通 Hibernate》學習筆記

第17章.hibernate的檢索方式

1.hql檢索方式

采用hql檢索時,需要定義字元串形式的hql查詢語句。

2.qbc檢索方式

qbcapi由org.hibernate.criteria接口,org.hibernate.criterion.criterion接口

和org.hibernate.restrictions類組成,支援運作時動态生成查詢語句。

建立criteria對象;通過restrictions設定criterion條件;

調用list()方法執行查詢。

3.使用别名

檢索一個持久化類的所有執行個體。

4.多态查詢

查詢出目前類及所有子類的執行個體。

5.對查詢結果排序,以及分頁查詢

6.檢索單個對象

7.可滾動的結果集

第22章.hibernate的緩存

1.持久化層緩存的範圍決定了緩存的生命周期以及能被誰通路。可以分為事務範圍 程序範圍和叢集範圍。

事務範圍的緩存是持久化層的第一級緩存,通常是必須的,程序範圍或叢集範圍是第二級緩存,通常是可選的。

2.當兩個并發的事務同時通路持久化層的同一資料緩存時,也有可能出現各類緩存問題。

3.第二級緩存可以設定幾種緩存隔離政策:事務型,讀寫型,非嚴格讀寫型,隻讀型。

事務隔離級别越高,并發性能就越低。

符合以下條件的資料可以放到第二級緩存中:

很少被修改的資料;

不是很重要的資料;

不會被并發通路的資料;

參考資料;

4.hibernate 提供兩級緩存,第一級緩存是session級的緩存,

第二級緩存是一個可插拔的緩存插件,由sessionfactory負責管理。由于sessionfactory對象的生命周期和應用程式的整個程序對應,是以第二級緩存是程序範圍或者叢集範圍的緩存。

緩存擴充卡(cache provider) 由于把具體的緩存實作軟體與hibernate內建。

hibernate 還為查詢結果提供了一個查詢緩存,它依賴于第二級緩存。

5.當應用程式調用session的save()/update()/saveorupdate()/load()/或get()方法,以及調用query查詢接口的list()/

iterate()或filter()方法時。如果在session的緩存中還存在相應的對象,hibernate就會把該對象加入到第一級緩存中,當清理緩存時,hibernate會根據緩存中對象的狀态來同步更新資料庫。

session提供了兩個方法,但多數情況并不提倡使用。

evict(object 0 );從緩存中清除參數指定的持久化對象。

clear();清空緩存中所有持久化對象。

6.配置二級緩存主要包含以下步驟:

(1)選擇需要使用第二級緩存的持久化類,設定它的第二級緩存的并發通路政策。

(2)選擇合适的緩存插件,每一種緩存插件都有自帶的配置檔案,需要手工配置。