0

我读过这篇文章。我无法按照这篇文章中的建议获得整个对象。我得到 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小时刷新一次缓存。因此timeToLiveSeconds在 ehcache.xml 中更新defaultCache

这是正确的方法吗?如何从查询缓存中知道查询是否命中二级缓存?

更新:我添加了统计信息,二级缓存没有命中/未命中。

4

1 回答 1

1

打开 SQL 日志记录和统计信息生成。如果您看到 SQL 查询日志记录,则表示缓存不起作用。

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

为了查看二级缓存的命中计数:

session.getSessionFactory().getStatistics().getSecondLevelCacheHitCount()
于 2013-02-04T08:38:00.423 回答