Hibernate缓存和Spring框架缓存有什么区别?

10

我有一个应用程序,使用Hibernate从数据库中获取数据。 我希望每天加载一次缓存(按用户)以获取数据库状态,并使用缓存。

我正在使用Spring框架与Hibernate,并且知道它们都具有一些缓存功能。

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

2个回答

20

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

然而,一个显着的区别是清除缓存。使用Spring缓存时需要明确清除,而如果您的插入、更新和删除通过Hibernate框架进行,则Hibernate缓存会自动维护。

在我所涉及的项目环境中,默认情况下假定使用Hibernate的二级缓存。我们使用Spring缓存来处理更为静态的数据。


2
Hibernate有两个级别的缓存:1. 第一级 2. 第二级 第二级缓存是为整个应用程序设计的,而第一级缓存是为当前Hibernate会话设计的。没有基于用户的缓存可用。
此外,如果您正在使用Spring管理的bean +缓存,则可以提供一个机制,使您可以将bean缓存到整个应用程序中,而不是针对某个用户。(对此有些不确定)
听起来您想将数据存储在用户的会话中,即只要用户具有活动会话。Spring具有会话作用域bean,您可能希望使用这些bean来按用户缓存数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接