【发布时间】:2013-01-18 21:30:22
【问题描述】:
我已阅读 this post. 我无法按照本文中的建议获取整个对象。我得到 MIN,MAX,Count 值。于是发了新帖。 以下是我想要的和我拥有的。
- 我的 Spring 应用程序没有对 DB(MySQL) 进行任何更改。它只是读取数据。它不会知道对 DB 中现有数据所做的更改。
我的所有查询都返回标量数据。不是整个对象。 (例如:
Select employee.name,office.address,MIN(employee.rec) from ... where..)我希望缓存我的查询。所以我在休眠配置中启用了查询缓存。并将
cacheable="true"添加到我的命名查询中。
4.我启用了二级缓存。
5.为持久化类添加如下注解。
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
6。我想每 24 小时刷新一次缓存。所以更新了 ehcache.xml 中的timeToLiveSeconds defaultCache。
这是正确的方法吗?如何从查询缓存中知道查询是否命中二级缓存?
更新:我添加了统计信息,二级缓存没有命中/未命中。
【问题讨论】:
-
使实体可缓存没有意义,因为您永远不会从查询中返回它们。要知道是否命中缓存,请打开 SQL 日志记录(通过将属性 hibernate.show_sql 设置为 true),然后查看是否生成了查询。
-
感谢@JBNizet。我假设我所有的其他配置都是正确的:)
标签: java hibernate ehcache second-level-cache query-cache