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

Java 什么';hibernate缓存和Spring框架缓存之间的区别是什么?,java,spring,hibernate,spring-mvc,caching,Java,Spring,Hibernate,Spring Mvc,Caching,我有一个从数据库获取数据的应用程序(使用hibernate)。 我想每天加载一次数据库状态的缓存(每个用户),然后使用缓存 我将Spring框架与Hibernate结合使用,我知道它们都有一些缓存的可能性 它们之间有什么区别?什么是更好的选择?Hibernate有两级缓存1。第一级2。第二级 二级缓存用于整个应用程序,而一级缓存用于当前休眠会话。每个用户都没有可用的缓存 另外,如果您使用的是spring管理的beans+缓存。有一项规定让您为整个应用程序而不是用户缓存bean。(对此有点不确定)

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

我将Spring框架与Hibernate结合使用,我知道它们都有一些缓存的可能性


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

Hibernate有两级缓存<代码>1。第一级2。第二级

二级缓存
用于整个应用程序,而
一级缓存
用于当前休眠会话。每个用户都没有可用的
缓存

另外,如果您使用的是spring管理的beans+缓存。有一项规定让您为整个应用程序而不是用户缓存bean。(对此有点不确定)


听起来您想将数据存储在
用户会话中
。即,只要用户有一个活动会话。Spring有一个
会话范围的bean
,您可能希望使用这些bean来缓存每个用户的数据

在我看来,从Hibernate缓存开始是一个更为谨慎的决定,尤其是因为两者并不相互排斥。就性能而言,Spring cache可以为您提供更多,它在堆栈中的地位更高,您可以缓存业务结果(基本上比hibernate的二级缓存更高)

然而,一个突出的区别是清除缓存。使用SpringCache时,您需要显式地清除,而如果您的插入、更新和删除经过hibernate的框架,则hibernate缓存会自动维护

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