我有一个应用程序,我从数据库中获取数据(使用hibernate)。 我想每天一次加载具有数据库状态的缓存(每个用户)并使用缓存。
我正在使用Spring框架和Hibernate,我知道它们都有一些缓存的可能性。
它们之间有什么区别?什么是更好的选择?
答案 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
您可能希望使用这些来缓存每个用户的数据。