hibernate缓存和Spring框架缓存之间的区别是什么?

时间:2015-01-13 15:41:46

标签: java spring hibernate spring-mvc caching

我有一个应用程序,我从数据库中获取数据(使用hibernate)。 我想每天一次加载具有数据库状态的缓存(每个用户)并使用缓存。

我正在使用Spring框架和Hibernate,我知道它们都有一些缓存的可能性。

它们之间有什么区别?什么是更好的选择?

2 个答案:

答案 0 :(得分:11)

在我看来,从Hibernate缓存开始是一个更谨慎的决定,特别是因为两者不相互排斥。在性能方面,Spring缓存可以为您提供更多,它在堆栈中更高,您可以缓存业务结果(基本上比使用hibernate的二级缓存更多)。

然而,一个突出的区别是清除缓存。使用Spring缓存需要明确清除,而如果插入,更新和删除通过hibernate框架,则自动维护hibernate缓存。

在我所涉及的项目的上下文中,假设使用hibernate的二级缓存,几乎是默认值。我们使用的Spring缓存用于本质上更加静态的数据。

答案 1 :(得分:2)

Hibernate有2级缓存。 1. First level 2. Second level

Second level chache适用于整个应用程序,first level cache适用于当前的hibernate会话。每个用户可以no cache个。

此外,如果您使用的是Spring托管bean +缓存。您可以为整个应用程序而不是用户缓存bean。 (很不确定)

我觉得您想要将数据存储在user's session中。即,只要用户正在进行活动会话。 Spring有session scoped beans您可能希望使用这些来缓存每个用户的数据。