是否可以将Hibernate的二级缓存用于COUNT()操作?

时间:2012-01-03 12:07:32

标签: hibernate jpa ehcache second-level-cache

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

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

我假设这超出了2LC的范围,而是需要“手动”管理(缓存查询结果,并在基础数据发生变化时使该缓存无效)。

1 个答案:

答案 0 :(得分:4)

你是对的,这是L2缓存提供的东西。但是query cache可以解决问题。

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

另见: