NHibernate延迟加载

1.和EF不同,NH的延迟加载不仅可以使用于关系而且可以使用于普通字段,用于在加载大数据时改进系统性能

2.默认情况下,hibernate对于字段(属性)的加载不使用延迟,对于关系的加载使用延迟

3.实现延迟加载

   3.1 在xml中配置

<property name="PartName" lazy="true" column="PartName"></property>
使用这种方法设置可以改变hibernate对某些的字段或关系的加载策略,但是这种加载策略会在整个工程中一直沿用

   3.2 查询过程中指定加载策略

      3.2.1使用Criteria进行查询时可以使用

NHibernateUtil.Initialize(object);
使用这种方法进行贪婪加载时,需要显示指定贪婪加载的实例,如NHibernateUtil.Initialize(user.Part);
这样在循环过程中仍会产生N+1的问题
3.2.2使用HQL进行查询时
return session.CreateQuery(@" from User as user 
        join fetch user.Part").List<User>();

     使用fetch可以在进行join的同时将指定对象的非延迟加载项加载到缓存中

posted @ 2011-09-28 16:30  wangking1029  阅读(286)  评论(0编辑  收藏  举报