【问题标题】:Is/Can Hibernate's Second-Level Cache be Used for COUNT() operations?Hibernate 的二级缓存是否可以用于 COUNT() 操作?
【发布时间】:2012-02-01 11:32:24
【问题描述】:

当使用 Hibernate 和 Ehcache 作为二级缓存 (2LC) 实现时,在使用 WHERE 子句执行 COUNT 操作时是否(或可以)使用此缓存?

在 SQL 术语中,我正在执行的查询是 SELECT COUNT(id) FROM table WHERE someColumn > 100。在某些情况下,每次传递的值都会不同,有时会始终相同。

我假设这超出了 2LC 的范围,而是需要“手动”管理(缓存查询结果,并在底层数据更改时使该缓存失效)。

【问题讨论】:

    标签: hibernate jpa ehcache second-level-cache


    【解决方案1】:

    你是对的,这超出了 L2 缓存所能提供的范围。不过query cache 可以解决问题。

    基本上,Hibernate 将缓存命名参数(在您的示例中为 [100] 元组)和名为 org.hibernate.cache.StandardQueryCache 的缓存中的查询结果之间的映射。当对table(更准确地说:查询中使用的任何表)进行任何 更改时,它也会使缓存无效。每个表的最后修改时间保存在org.hibernate.cache.UpdateTimestampsCache缓存中。

    另见:

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 2011-06-24
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多