NHibernate小结之五
来源:互联网 发布:错生网络剧在线播放 编辑:程序博客网 时间:2024/06/09 17:55
延迟加载在NH里面分为一对一和一对多,Hibernate3中有对列的延迟,但NH目前还没有(2.0版)。
延迟的实现主要在于设置。
原理在http://www.hibernate.org/162.html说的比较清楚。
一对一
主动方的<one-to-one... constrain="true">,被动方的<class ..lazy="true">(或者不用设置,因为这是默认的),这样设置即可。
多对多
主动方的<one-to-many... lazy="true" out-joint="auto">外连接一定不能设为true,否则就会一个select取回数据了。被动方的<class ..lazy="true">(或者不用设置,因为这是默认的)。
给个一对一的例子,是上一小节中的Person和Passport,这回的延迟加载的了
- <?xml version="1.0"?>
- <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Demo3" namespace="Demo3.Domain">
- <class name="Person">
- <id name="ID">
- <generator class="native"/>
- </id>
- <property name="Age"/>
- <property name="Name"/>
- <one-to-one name="Passport" class="Passport" constrained="true" cascade="all"/>
- </class>
- </hibernate-mapping>
- <?xml version="1.0"?>
- <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Demo3" namespace="Demo3.Domain">
- <class name="Passport">
- <id name="ID">
- <generator class="foreign">
- <param name="property">Person</param>
- </generator>
- </id>
- <property name="Expire"/>
- <one-to-one name="Person" class="Person"/>
- </class>
- </hibernate-mapping>
测试代码
- [Test]
- public void TestRetrieve()
- {
- var session = HibernateFacotry.CurrentSession();
- var l = session.CreateCriteria(typeof(Person)).List();
- var p = l[0] as Person;
- Console.WriteLine("the passport now is ============");
- Console.WriteLine(p.Passport.GetType());
- Console.WriteLine("now load the real object ============");
- Console.WriteLine(p.Passport.Expire);
- }
多对多的延迟上小节中Parent和Child配置已经是的了,就不再列出来了。
- NHibernate小结之五
- NHibernate小结之二
- NHibernate小结之三
- NHibernate小结之六
- 五、NHibernate之事务处理
- nhibernate源码分析之五: 对象标识
- nhibernate源码分析之五: 对象标识
- NHibernate小结之一
- oracle学习小结之五
- oracle学习小结之五
- NHibernate 做个小项目(五)
- NHibernate使用入门(五)
- Spring.net&Nhibernate小结
- 『Spring.NET+NHibernate+泛型』框架搭建之WebUI(五)★
- 小结五
- 开始Nhibernate之旅---Nhibernate是什么
- 跟NHibernate之夏一起学习NHibernate
- NHibernate之 composite-element
- 嵌入式软件工业化测试工具LOGISCOPE
- C语言——文件的打开和关闭
- 嵌入式软件测试工具--LOGISCOPE
- 监控别人电脑从此不再是难题!!请勿乱用
- 2008-08-31
- NHibernate小结之五
- VC++中使用Zlib的一个例子
- 325project详细介绍
- E-mail地址搜集方法
- 超越自我 从程序员到系统分析员
- 不可思议:维基百科仅有300台服务器。
- 决定高薪必要的细节守则【转】
- lint使用简介
- 如何把类函数做为回调函数.--提出问题