2015-01-13 92 views
1

我有个问题。我有一个应用程序,我从数据库中获取数据(使用休眠)。我希望:每个用户在白天只从数据库下载一次数据。所以我想缓存从数据库中得到的结果。我使用Hibernate的Spring框架,我知道他们都有一些缓存的可能性。但是,我不知道它们之间有什么区别,什么是更好的选择。威尔感谢答案。休眠缓存和Spring远程缓存有什么区别?

回答

2

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

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

另外如果你使用spring managed beans + caching。有一项规定可以缓存整个应用程序的Bean而不是用户。 (对此不太确定)

这听起来就是你想要在user's session中存储数据。即,只要用户正在进行活动会话。 Spring有一个session scoped beans您可能想要使用它们来缓存每个用户的数据。

3

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

但是,一个突出的区别是清除缓存。有了Spring缓存,你需要明确地清除,而如果你的插入,更新和删除操作通过hibernate的框架,hibernate缓存会自动维护。

在我参与的项目中,假设使用hibernate的二级缓存,这几乎是默认的。我们使用Spring缓存来处理更加静态的数据。