NHibernate学习(6)—使用缓存

it2022-05-05  107

一级缓存 1.  使用ISession.Get()方法立即把对象实例保存到缓存中,使用ISession.Load()方法当你需要使用的时候再访问数据库把这个实例保存在缓存中。 2. NHibernate一级缓存管理

  ISession.Evict(object):从缓存中删除指定实例。

  ISession.Clear():清空缓存。

  ISession.Contains(object):检查缓存中是否包含指定实例 使用ISession.Get()方法立即把对象实例保存到缓存中,使用ISession.Load()方法当你需要使用的时候再访问数据库把这个实例保存在缓存中。 在测试时发现一个问题调用Get方法时,一级缓存并不起作用,调用Load方法就可以。这点是不是NHibernate2.1.0的改变呢?对于二级缓存的测试也是如此... 刚才又好好的看了下,原来是之前的测试把数据删除了,新添的用户是以id为3开始的用下面的代码是可以查到的,原来是自己的一时粗心所致...  [Test]         public   void  SessionFactoryCacheTest()         {            using (_session)            {                Console.WriteLine("--Session 1--读取持久化实例--");                Customer customer1 = _session.Get<Customer>(3);                Assert.IsNotNull(customer1);            }            ResetSession();            using (_session)            {                Console.WriteLine("--Session 2--读取持久化实例--");                Customer customer2 = _session.Get<Customer>(3);                Assert.IsNotNull(customer2);            }        }   private void ResetSession()         {             if (_session.IsOpen)                 _session.Close();             _session = _helper.GetSession();             _sample.Session = _session;         }

管理NHibernate二级缓存

NHibernate二级缓存由ISessionFactory创建并由ISessionFactory自行维护。我们使用NHibernate操 作数据时,ISessionFactory能够自动同步缓存,保证缓存的有效性。但是当我们批量操作数据时,往往NHibernate不能维护缓存持久有 效。ISessionFactory提供了可编程方式的缓存管理方法。

ISessionFactory提供了一系列的EvictXXX()方法可以方便的从二级缓存中删除一个实例、删除一个集合、一个命名缓存等操作

Evict(persistentClass):从二级缓存中删除persistentClass类所有实例Evict(persistentClass, id):从二级缓存中删除指定的持久化实例EvictEntity(entityName):从二级缓存中删除命名实例EvictCollection(roleName):从二级缓存中删除集合EvictCollection(roleName, id):从二级缓存中删除指定的集合EvictQueries():从二级缓存中刷新全部查询结果集EvictQueries(cacheRegion):从二级缓存中刷新指定查询结果集

ISession内置缓存可以共享ISessionFactory缓存,通过指定ISession的CacheMode可以控制ISession和ISessionFactory的交互方式。ISession可以通过以下五种方式和ISessionFactory交互:

Ignore:更新数据时将二级缓存失效,其它时间不和二级缓存交互Put:向二级缓存写数据,但不从二级缓存读数据Get:从二级缓存读数据,仅在数据更新时向二级缓存写数据Normal:默认方式。从二级缓存读/写数据Refresh:向二级缓存写数据,想不从二级缓存读数据,通过在配置文件设置cache.use_minimal_puts从数据库中读取数据时,强制二级缓存刷新 李永京的NHibernate之旅就到更新到这里,相信以后还有更多精彩的文章,但是我的NHibernate学习笔记才刚刚开始... 这是目前我学习笔记的最新代码: NHibernateSample3.zip 本文部分内容引自: YJingLee's Blog

转载于:https://www.cnblogs.com/haokaibo/archive/2009/10/07/1578910.html

相关资源:各显卡算力对照表!

最新回复(0)