1. 程式人生 > >Hibernate快取機制

Hibernate快取機制

快取:為了降低應用程式對物理資料來源訪問的頻次,從而提高應用程式的執行效能。

快取的工作原理:

物理資料來源——>(資料)快取——>(資料)記憶體

在應用程式中首先會選擇在快取中讀取資料,如果快取中沒有再選擇在資料庫中讀取並把讀取的資料放到快取中;有點類似暫存器。

在Hibernate中使用不同的Session物件進行資料庫操作,他們之間不能共享同一個快取;也就是不同的Session物件多次查詢同一個物件是會產生多條查詢語句。

Hibernate一級快取:

1.一級快取有成為Session快取,會話快取;

2.通過Session物件從資料庫中查詢實體,會把實體在記憶體中儲存起來,下一次查詢該實體時,直接從記憶體中讀取;

3.一級快取的宣告週期和Session物件的生命週期相同;

4.一級快取中的資料適用於當前快取中;

一級快取無法取消,可以用兩個方法進行管理:

1.evict():用於將某個物件從Session的一級快取中清除;

2.clear():用於將一級快取中的所有物件全部清除;

在查詢的時候有時也不會使用快取如:

Query query=session.CreateQuery("*******");

query.list():不會使用快取,query.iterate():會使用快取;

二級快取:

二級快取也稱為全域性快取,在所有的Session的物件都會共享一個快取;

二級快取的配置步驟:

1.新增二級快取的Jar包;

2.在hibernate的配置檔案中新增provide類的描述:

<!-- 指定二級快取的外部實現類 -->
    <property name="cache.provider_class">net.sf.encache.hibernate.EhCacheProvider</property>

3.新增encache.xml到專案中;

4.在需要被快取的表的對映檔案新增<cache>標籤

二級快取的適應資料:

很少被修改的、不重要、參考資料