当使用 Hibernate 和 Ehcache 作为二级缓存 (2LC) 实现时,在使用 WHERE 子句执行 COUNT 操作时是否(或可以)使用此缓存?
用 SQL 术语来说,我正在执行的查询是SELECT COUNT(id) FROM table WHERE someColumn > 100
。在某些情况下,每次传递的值都会不同,有时它总是相同。
我假设这超出了 2LC 的范围,而是需要“手动”管理(缓存查询结果,并在底层数据发生更改时使该缓存无效)。
你是对的,这超出了二级缓存所能提供的范围。然而查询缓存 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-querycache会成功的。
基本上 Hibernate 将缓存命名参数之间的映射([100]
示例中的元组)和名为的缓存中的查询结果org.hibernate.cache.StandardQueryCache
。当以下情况发生时,它也会使缓存失效:any进行了更改table
(更准确地说:查询中使用的任何表)。每个表的最后修改时间存储在org.hibernate.cache.UpdateTimestampsCache
cache.
也可以看看:
- 使用 Hibernate + Spring 进行缓存 - 一些问题! https://stackoverflow.com/questions/5405417
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)