筆記:Hibernate 查詢快取

來源:互聯網
上載者:User

標籤: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 方法來設定,有如下幾種類型:

  1. CacheMode.NORMAL:正常模式(預設),Session會向二級緩衝中讀取和寫入資料。
  2. CacheMode.IGNORE:忽略模式,Session不會向二級緩衝讀取,也不會寫入資料。
  3. CacheMode.GET:Session對二級緩衝唯讀不寫。
  4. CacheMode.PUT:Session對二級緩衝唯寫不讀。
  5. CacheMode.REFRESH:重新整理模式,Session不會從二級緩衝中讀取資料,但會向其中寫入從資料庫讀取的資料。和PUT的區別在於REFRESH會忽略設定檔中的hibernate.cache.use_minimal_puts屬性,強制重新整理二級緩衝中的所有資料。

??

??

筆記:Hibernate 查詢快取

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.