2014-10-07 317 views
1

在休眠已经有一级缓存可用于缓存,那么为什么我们必须使用二级缓存?为什么我们不能在Hibernate中只使用一级缓存进行缓存,而不是第二级?休眠缓存

回答

0

有关Hibernate缓存的详细说明,请参阅What are First and Second Level caching in Hibernate?

基本上是:

  • 一级高速缓存中加快更新单个会话/事务
  • 二级缓存加速在许多交易中使用对象的检索。

这些是两种不同的使用情况,需要不同的需求,需要不同种类的逻辑。

+0

@ user3898783 does [this](http://ankursinghal86.blogspot.jp/2014/07/how-hibernate-second-level-cache-works.html)帮助你 – 2014-11-18 13:12:29

0

一级高速缓存在会话级别工作,这意味着一个持久对象将被跟踪,直到当前Session被关闭。在关闭此会话之前对此对象所做的任何更改都会反映在数据库中。它默认启用。

二级缓存工作在SessionFactory级别,因此即使当前会话已关闭,也会跟踪对持久对象所做的所有更改。您必须手动启用它。有几个供应商提供这种功能,其中一些是ehCache,SwarmCache,OScache等。

0

Hibernate二级缓存是一个可选缓存,并且在尝试定位一个对象之前总是会查询一级缓存在二级缓存中。

它主要用于需要跨会话缓存对象的情况。