Nhibernate 之 二级缓存

来源:互联网 发布:罪恶装备人物乐乎 编辑:程序博客网 时间:2024/06/09 02:39

NHibenrate 适用版本 : 2.1.2.4000 GA

(原文链接 http://ddbiz.com/?p=149)

NHibernate 二级缓存可以说是与session不相关的,是ISessionFactory级别的。也就是说,不论哪个Session装载的对象,都被缓存在ISessionFactory中。

 

1. 配置二级缓存

NHibernate的二级缓存需要几个必要条件:

1.1) hibernate.cfg.xml中明确定义,如:

#1    <property name='cache.provider_class'>NHibernate.Caches.MemCache.MemCacheProvider, NHibernate.Caches.MemCache</property>

#2    <property name='cache.use_second_level_cache'>true</property>

#1 指明使用的cache实现
#2 指明要在sessionfactory中启用二级缓存。
如何配置memcache二级缓存?
此处实现memcache做二级缓存是因为我的其他项目也用到了memcache,有专门的几个服务器做缓存服务,所以也算是资源最大化利用吧。
memcache二级缓存需要几个assembly:
ICSharpCode.SharpZipLib.dll
Memcached.ClientLibrary.dll
NHibernate.Caches.MemCache.dll
这几个assembly都必须复制到应用的执行空间(或者加入到GAC)
除了上述1)的provider_class之外,在应用的配置文件中(app/web.config),还需要定义memcache的几个配置项:
以下为 web.config 配置:
<configSections>
    <section name="memcache" type="NHibernate.Caches.MemCache.MemCacheSectionHandler, NHibernate.Caches.MemCache" />
    ... ...
</configSections>
<memcache>
    <memcached host="127.0.0.1" port="11211" />
</memcache>

1.2) 在对象定义中指明使用cache

如 TUser.hbm.xml中:
<cache usage="read-write" />
2 使用二级缓存
经过1.2声明的对象,在 Get, Load, Create之后,都会被存入二级缓存。具体应用后面慢慢加入。(待续)

(原文链接 http://ddbiz.com/?p=149)

原创粉丝点击