最佳答案
如果所有事情都等于考虑更喜欢方法调用结果的Spring缓存,那么原因是在服务层级别推理缓存更简单.
Hibernate二级缓存工作正常,但在我看来更难以推理,它有更多的陷阱.例如,它不适用于查询,仅适用于通过ID查找或加载惰性关联.
实际上,默认情况下加载延迟关联是OFF,需要在集合级别使用hibernate特定注释启用.
要查询查询结果,您还需要使用查询缓存,它只缓存仅返回原始值的Id和查询.然后,针对二级缓存解析缓存查询的ID.
在这两种情况下和一般的缓存中,问题通常是找到使缓存无效的正确时刻.两种方式都允许在缓存提供程序级别(如ehcache)配置到期和最大元素/内存数.
为了明确地清除缓存,Spring提供了@Cacheevict方法注释,为了比较,这里是clearing the Hibernate second level cache的推荐方法.
另外看看这篇写得很好的博文:Truly Understanding the Hibernate Second Level and Query caches.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。