现在的位置: 首页 > 综合 > 正文

NHibernate延迟加载

2012年10月17日 ⁄ 综合 ⁄ 共 530字 ⁄ 字号 评论关闭

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的同时将指定对象的非延迟加载项加载到缓存中

抱歉!评论已关闭.