標籤:refresh ssi font null ref 檔案 讀取資料 system 檔案中
Hibernate 的一級緩衝和二級緩衝都是對實體進行緩衝,他不會緩衝普通屬性,如果想對普通熟悉進行緩衝,可以考慮使用查詢快取。
對於查詢快取來說,他緩衝的Key就是查詢所用的 HQL 或者 SQL 陳述式,查詢快取不僅要求使用的語句相同,還要求參數必須一致,查詢快取預設是關閉的,為了開啟查詢快取,需要修改 Hibernate.cfg.xml 設定檔,增加如下配置:
<property name="hibernate.cache.use_query_cache">true</property>
要使用查詢快取還必須在調用查詢時,使用 setCacheable 方法開啟緩衝,範例程式碼如下:
??
public static void main(String[] args) {
Session curSession = hibernateUtils.openSession();
try {
??
// 第一次查詢,啟用了緩衝
List list = curSession.createQuery("SELECT trm FROM TransitRecordModel trm").setCacheable(true).list();
System.out.println("Query Size=" + list.size());????????????????
// 第二次查詢,啟用了緩衝,因此從緩衝讀取,不發起資料庫查詢操作
list = curSession.createQuery("SELECT trm FROM TransitRecordModel trm").setCacheable(true).list();
System.out.println("Query Size=" + list.size());
} finally {
if (curSession != null) {
curSession.close();
}
}
}
??
查詢快取和二級緩衝的互動通過 setCacheMode 方法來設定,有如下幾種類型:
- CacheMode.NORMAL:正常模式(預設),Session會向二級緩衝中讀取和寫入資料。
- CacheMode.IGNORE:忽略模式,Session不會向二級緩衝讀取,也不會寫入資料。
- CacheMode.GET:Session對二級緩衝唯讀不寫。
- CacheMode.PUT:Session對二級緩衝唯寫不讀。
- CacheMode.REFRESH:重新整理模式,Session不會從二級緩衝中讀取資料,但會向其中寫入從資料庫讀取的資料。和PUT的區別在於REFRESH會忽略設定檔中的hibernate.cache.use_minimal_puts屬性,強制重新整理二級緩衝中的所有資料。
??
??
筆記:Hibernate 查詢快取