疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

武汉java培训:Hibernate的缓存


 

  Hibernate持久层缓存的级别:

  (1)事务级别

  该级别缓存中的缓存对象只能被当前事务使用,每个事务都有各自的缓存,缓存中的数据通常以关联对象的形式保存。同时被缓存对象的生命周期依赖于当前事务的生命周期,当前事务结束时,该缓存中缓存对象的生命周期也会结束。事务级别的缓存通常使用内存作为保存缓存对象的存储介质,Hibernate的一级缓存(Session缓存)即该级别的缓存。

  (2)应用(进程)级别

  该级别缓存中对象可以被当前应用(进程)内的所有事务共享访问,被缓存对象的生命周期与当前应用相同。当应用结束时,缓存对象的生命周期结束。如果当前应用是一个分布式应用,则不能使用该级别的缓存,这种级别的缓存使用内存或硬盘作为缓存对象的存储介质。

  (3)分布式级别

  如果当前应用部署在多台服务器的分布式(集群)环境下,则当前应用可以使用分布式级别的缓存缓存持久化对象。分布式缓存中缓存的数据会被一台或者多台服务器共享。如果缓存数据发生变化,则更新后的缓存数据会同步到集群中的每台服务器中,进而保证缓存数据的一致性。

  Hibernate的二级缓存可以是应用级别或者分布式级别的缓存,完全依赖于第三方缓存组件的具体实现。

  Hibernate没有提供自身产品级别的二级缓存,而是在设计上利用第三方成熟的缓存组件实现。为了集成不同的第三方缓存组件

  Hibernate提供了org.hibernate.cache.CacheProvider接口用来作为缓存组件与Hibernate之间的适配器。在实际开发中,

  Hibernate二级缓存组件如表:

  缓存名称

  对应的适配器类

  Hashtable

  org.hibernate.cache.HashtableCacheProvider

  EHCache

  org.hibernate.cache.EhCacheProvider

  OSCache

  org.hibernate.cache.OSCacheProvider

  SwarmCache

  org.hibernate.cache.SwarmCacheProvider

  JBoss Cache 1.x

  org.hibernate.cache.TreeCacheProvider

  Jboss Cache 2

  org.hibernate.cache.jbc2.JBossCacheRegionFactory