用于标量查询的Hibernate缓存

时间:2013-02-04 07:47:55

标签: java hibernate ehcache second-level-cache query-cache

我已阅读this post.我无法按照此帖中的建议获取整个对象。我得到MIN,MAX,Count值。所以一个新帖子。 以下是我想要的和我拥有的。

  1. 我的Spring应用程序不会对DB(MySQL)进行任何更改。它只是读取数据。它不会意识到对DB中现有数据所做的更改。
  2. 我的所有查询都会返回标量数据。不是整个对象。 (例如:Select employee.name,office.address,MIN(employee.rec) from ... where..

  3. 我希望缓存我的查询。所以我在hibernate配置中启用了查询缓存。并将cacheable="true"添加到我的命名查询中。

  4. 4.I启用了二级缓存。

    5.为持久性类添加了以下注释。

    @Cacheable 
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    

    6。我想每24小时刷新一次缓存。已在ehcache.xml timeToLiveSeconds中更新defaultCache

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

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

1 个答案:

答案 0 :(得分:1)

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

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

为了查看二级缓存的点击次数:

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