如果所有条件都相同,则考虑首选方法调用结果的 Spring 缓存,原因是在服务层级别进行缓存的推理更简单。
Hibernate 二级缓存工作正常,但在我看来它更难推理并且有更多陷阱。例如,它不适用于查询,仅适用于通过 Id 查找或加载延迟关联。
实际上,默认情况下延迟关联的加载是关闭的,并且需要在集合级别使用特定于休眠的注释启用。
要查询查询结果,您还需要使用查询缓存,它只缓存 Id 和仅返回原始值的查询。然后根据二级缓存解析缓存查询的 ID。
在这两种情况下以及一般的缓存中,问题通常是找到使缓存无效的合适时机。这两种方式都允许在缓存提供程序(例如 ehcache)级别配置过期和最大元素/内存数量。
为了显式清除缓存,Spring提供了@CacheEvict
方法注解,为了比较这里推荐的清除Hibernate二级缓存的方式。
也可以看看这篇写得很好的博客文章:真正理解 Hibernate 二级缓存和查询缓存。
归档时间: |
|
查看次数: |
3059 次 |
最近记录: |