我已经阅读了关于Hibernate在here中关于Hibernate二级缓存的参考,以及've read about the Spring 3.1'中的缓存抽象 .
之后,我了解Hibernate的二级缓存与第一级缓存非常相似,但它的范围扩展到了SessionFactory . 而且,Spring 3.1的@Cacheable看起来很适合服务层 .
我想在这里为您提供更详细的用例 .
-
我应该何时何地使用Hibernate二级缓存?
-
我应该何时何地使用Spring 3.1的缓存抽象?
谢谢阅读 .
2 回答
Hibernate的二级缓存的一个常见用例是缓存静态或非常不频繁更改的参考数据 . 例如,州/省及其属性的列表 .
只要你有一个方法返回一个计算成本很高的值,Spring的@Cacheable就很有用 .
在@Cacacheable和Hibernate二级缓存方案中,如果数据会随着时间的推移而发生变化,那么您应该仔细考虑应该使用哪种缓存实现(例如,它应该是分布式缓存吗?缓存失效怎么办?)
@Whiteship,这两个是完全不同的东西 .
@Cahceable更多地与方法和计算广泛的操作有关 .
Hiberante二级缓存基本上用于跨SessionFactory缓存持久数据 . 默认情况下不启用它并大大提高了性能 . (如果以正确的方式使用,则不仅仅是只读数据,还有可写数据) .
Cacheable可以在某种程度上等同于Hibernate查询缓存 . 为了启用hibernate查询缓存,需要启用hibernate二级缓存 .
但是因此我们使用相同的args缓存查询结果,并使用相同的args缓存方法的结果 . 那里有一些概念级别的相似性,