首页 / 软件开发 / .NET编程技术 / NHibernate之旅(23):探索NHibernate二级缓存(上)
NHibernate之旅(23):探索NHibernate二级缓存(上)2010-07-23 cnblogs 李永京本节内容引入介绍NHibernate二级缓存NHibernate二级缓存提供程序实现NHibernate二级缓存结语引入上一篇我介绍了NHibernate内置的一级缓存即ISession缓存。这篇我们来了解下NHibernate二级缓存即ISessionFactory级别缓存。二级缓存是可扩展的,在NHibernate Contrib上提供了第三方NHibernate二级缓存提供程序。介绍NHibernate二级缓存NHibernate二级缓存由ISessionFactory创建,可以被所有的ISession共享。在NHibernate中,当我们启用NHibernate二级缓存。使用ISession进行数据操作时,NHibernate首先从内置缓存(一级缓存)中查找是否存在需要的数据,如果内置缓存不存在需要的数据,则查询二级缓存,如果二级缓存中存在所需数据,则直接使用缓存中数据,否则从数据库中查询数据并放入缓存中。NHibernate本身提供了一个基于Hashtable的HashtableCache缓存,但是功能非常有限而且性能比较差,不适合在大型应用程序使用,我们可以使用第三方缓存提供程序作为NHibernate二级缓存实现。但是,使用缓存的缺点就是如果缓存策略设置不当,NHibernate不知道其它应用程序对数据库的修改及时更新缓存。因此,建议只对系统经常使用、数据量不大且不会被其它应用程序修改的只读数据(或很少被修改的数据)使用缓存。NHibernate二级缓存提供程序NHibernate提供了NHibernate.Cache.ICacheProvider接口用来支持第三方缓存提供程序实现。开发缓存提供程序时,需要实现该接口作为NHibernate和缓存实现直接的适配器。NHibernate提供了常见的缓存提供程序的内置适配器,这些适配器都实现了NHibernate.Cache.ICacheProvider接口。除了NHibernate本身提供的一个基于Hashtable的HashtableCache缓存,在NHibernate Contrib上提供了六种第三方NHibernate二级缓存提供程序,完全开源的。我们直接下载其程序集引用到我们的项目中就可以使用了。NHibernate.Caches.MemCacheNHibernate.Caches.PrevalenceNHibernate.Caches.SharedCacheNHibernate.Caches.SysCacheNHibernate.Caches.SysCache2NHibernate.Caches.Velocity