簡體   English   中英

用於標量查詢的Hibernate緩存

[英]Hibernate cache for scalar queries

我已經看過這篇文章。 我無法獲得這篇文章中建議的全部對象。 我正在獲得MIN,MAX,Count值。 因此,一個新的職位。 以下是我想要的和我擁有的。

  1. 我的Spring應用程序未對DB(MySQL)進行任何更改。 它只是讀取數據。 它不會知道對數據庫中現有數據所做的更改。
  2. 我所有的查詢都返回標量數據。 不是整個對象。 (例如: Select employee.name,office.address,MIN(employee.rec) from ... where..

  3. 我希望查詢被緩存。 因此,我在休眠配置中啟用了查詢緩存。並將cacheable="true"添加到命名查詢中。

4.我啟用了二級緩存。

5.為持久性類添加了以下注釋。

@Cacheable 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)

6.我想每24小時刷新一次緩存。 因此,在ehcache.xml defaultCache更新了timeToLiveSeconds

這是正確的方法嗎? 如何知道查詢是否從查詢緩存中命中二級緩存?

更新:我添加了統計信息,並且二級緩存上沒有命中/未命中。

打開SQL日志記錄和統計信息生成。 如果看到SQL查詢日志記錄,則意味着緩存不起作用。

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.generate_statistics" value="true"/>

為了查看二級緩存上的命中數:

session.getSessionFactory().getStatistics().getSecondLevelCacheHitCount()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM