【发布时间】:2015-03-11 15:05:45
【问题描述】:
我有一个从数据库获取数据的应用程序(使用休眠)。 我想每天一次用数据库状态加载缓存(每个用户),然后改用缓存。
我正在使用带有 Hibernate 的 Spring 框架,并且我知道它们都有一些缓存的可能性。
它们之间有什么区别?什么是更好的选择?
【问题讨论】:
标签: java spring hibernate spring-mvc caching
我有一个从数据库获取数据的应用程序(使用休眠)。 我想每天一次用数据库状态加载缓存(每个用户),然后改用缓存。
我正在使用带有 Hibernate 的 Spring 框架,并且我知道它们都有一些缓存的可能性。
它们之间有什么区别?什么是更好的选择?
【问题讨论】:
标签: java spring hibernate spring-mvc caching
在我看来,从 Hibernate 缓存开始是一个更谨慎的决定,尤其是因为两者并不相互排斥。在性能方面 Spring 缓存可以为您提供更多,它在堆栈中更高,您可以缓存业务结果(基本上比使用 hibernate 的二级缓存更多)。
然而,一个显着的区别是清除缓存。使用 Spring 缓存,您需要显式清除,而如果您的插入、更新和删除通过 hibernate 的框架,则会自动维护 hibernate 缓存。
在我参与的项目的上下文中,假设使用 hibernate 的二级缓存,几乎是默认值。我们将 Spring 缓存用于本质上更加静态的数据。
【讨论】:
Hibernate 有 2 级缓存。 1. First level 2. Second level
Second level chache 用于整个应用程序,first level cache 用于当前休眠会话。每个用户都有no cache。
另外,如果您使用的是 spring 托管 bean + 缓存。您可以为整个应用程序而不是用户缓存 bean。 (对此有点不确定)
听起来您想将数据存储在user's session 中。即,只要用户正在进行活动会话。 Spring 有一个session scoped beans,您可能希望使用它们来缓存每个用户的数据。
【讨论】: