我已阅读this post.我无法按照此帖中的建议获取整个对象。我得到MIN,MAX,Count值。所以一个新帖子。 以下是我想要的和我拥有的。
我的所有查询都会返回标量数据。不是整个对象。 (例如:Select employee.name,office.address,MIN(employee.rec) from ... where..
)
我希望缓存我的查询。所以我在hibernate配置中启用了查询缓存。并将cacheable="true"
添加到我的命名查询中。
4.I启用了二级缓存。
5.为持久性类添加了以下注释。
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
6。我想每24小时刷新一次缓存。已在ehcache.xml timeToLiveSeconds
中更新defaultCache
。
这是正确的做法吗?如何知道查询是否从查询缓存中命中二级缓存?
更新:我添加了统计信息,并且二级缓存没有命中/未命中。
答案 0 :(得分:1)
启用SQL日志记录和统计信息生成。如果您看到SQL查询记录,则表示缓存不起作用。
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.generate_statistics" value="true"/>
为了查看二级缓存的点击次数:
session.getSessionFactory().getStatistics().getSecondLevelCacheHitCount()