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
您正在看的文章来自疯狂软件教育中心 www.fkjava.org
信息咨询:Q564205990 星老师