适用于Hibernate二级缓存和Spring 3.1的@Cacheable的用例是什么?

时间:2011-08-04 01:58:41

标签: hibernate spring caching

我已经阅读了Hibernate关于here中Hibernate二级缓存的参考资料,我在here中读到了Spring 3.1的缓存抽象。

之后,我了解Hibernate的二级缓存与第一级缓存非常相似,但是它的范围扩展到了SessionFactory。而且,Spring 3.1的@Cacheable看起来很适合服务层。

我想在此向您提供更详细的用例。

  • 我应该何时何地使用Hibernate二级缓存?
  • 我应该何时何地使用Spring 3.1的缓存抽象?

感谢阅读。

2 个答案:

答案 0 :(得分:0)

Hibernate的二级缓存的一个常见用例是缓存静态或非常不频繁更改的参考数据。例如,州/省及其属性的列表。

Spring的@Cacheable在任何有方法返回计算成本高的值的任何地方都很有用。

在@Cacacheable和Hibernate二级缓存方案中,如果数据会随着时间的推移而发生变化,那么您应该仔细考虑应该使用哪种缓存实现(例如,它应该是分布式缓存吗?缓存失效怎么办?)< / p>

答案 1 :(得分:0)

@Whiteship,这两者完全不同。

@Cahceable更多地与方法和计算广泛的操作有关。

Hiberante二级缓存基本上用于缓存SessionFactory中的持久数据。默认情况下不启用它并大大提高了性能。 (如果以正确的方式使用,不仅是对于只读数据而且对可写数据也是如此)。

Cacheable可以在某种程度上等同于Hibernate查询缓存。为了启用hibernate查询缓存,需要启用hibernate二级缓存。

但是因此我们使用相同的args缓存查询结果,并使用相同的args缓存方法的结果。那里有一些概念级别的相似性,