Hibernate + EhCache,不断丢失缓存

时间:2009-08-17 17:24:36

标签: hibernate caching ehcache

我已经将我的一些对象配置为可缓存(在映射文件上),并且从我可以看到的对于这个特定对象,缓存不能很好地工作。

对于其他对象,我看到每次迭代时命中计数增加,但错过的计数为0,而对于这一次,我看到它错过了会话​​的每一次。

Elements in Memory: 8305 
Elements on Disk: 0 
Hit Count: 24915 
Missed Count 8305 
Put Count: 8305

我正在寻找可能出错的一些指示。

  • 作为背景我检查了equals和hashCode实现,甚至调试似乎都返回了正确的结果。
  • 此特定对象用于其他对象的集合,以及顶级对象。

1 个答案:

答案 0 :(得分:2)

当然,这些统计信息表明您正在正确地访问缓存。

如果您通过ID获取对象,Hibernate将大致遵循以下步骤:

  1. 签入第一级缓存(会话对象)
  2. 检查二级缓存,然后错过
  3. 从db
  4. 加载对象
  5. 下次放入二级缓存
  6. 对于未注册未命中的其他对象,最可能的解释是您不是通过其ID访问它们,而是使用查询或某些无法直接访问高速缓存的关联。