2009年3月18日

摘要: 数据库中的主从表就是一对多的关系了,这种关系在按范式设计的数据库中是十分常见的.在nh中,通过one-to-many映射可以十分方便的处理这种关系,包括级联更新,删除等. 下面以一个简单的主从表来说明one-to-many的应用. 先来看看Parent类的映射信息: ... 阅读全文
posted @ 2009-03-18 14:46 裴晓华 阅读(278) 评论(0) 推荐(0) 编辑
 
摘要: 对象标识相当于数据表中的主键,在持久化中起着十分重要的作用,nhibernate通过对象标识来辨别两个持久对象是否相等。 在映射文件中,通过id属性来定义对象标识,内容如下: 其中unsaved-value属性用来指明对象未持久化时的值,如果此值与未持久化的对象... 阅读全文
posted @ 2009-03-18 14:45 裴晓华 阅读(272) 评论(0) 推荐(0) 编辑
 
摘要: 持久化操作由与持久对象关联的持久化类来完成,持久化类是实现IClassPersister接口的类,每个持久对象都有一个关联的持久化类,这些持久化类存储在会话工厂的classPersisters集合中,nhibernate允许用户通过自定义的持久化类来持久化数据。 IClassPersister接口... 阅读全文
posted @ 2009-03-18 14:44 裴晓华 阅读(347) 评论(0) 推荐(0) 编辑
 
摘要: 会话是nhibernate中的主要接口,也是我们进行持久化操作和数据加载的主要接口,ISession在IClassPersister、ITransaction、ICriteria和IQuery之间起着协调者的作用。 会话对象通过调用会话工厂的OpenSession方法获得,OpenSession... 阅读全文
posted @ 2009-03-18 14:43 裴晓华 阅读(351) 评论(0) 推荐(0) 编辑
 
摘要: 会话工厂是NHibernate中的关键类,它与数据库连接、数据库事务等进行交互,还存储着与所有持久对象类型关联的持久化对象,持久化类是持久化的关键,它实现基本的CRUD操作。 当用户需要持久操作时,由会话工厂创建一个会话供用户进行持久操作。 1. 会话工厂的创建 会话工厂由ISessionFa... 阅读全文
posted @ 2009-03-18 14:42 裴晓华 阅读(456) 评论(0) 推荐(0) 编辑
 
摘要: 在有些时候,可能需要直接执行SQL语句、存储过程等,但nhibernate并没有提供一种让我们执行SQL语句的方法,不过可以通过一些间接的方法来实现。 1. IDriver接口 IDriver接口就是数据访问的驱动器,对于不同的数据提供者(SqlClient, OleDb等)就有不同的驱动器,... 阅读全文
posted @ 2009-03-18 14:40 裴晓华 阅读(361) 评论(0) 推荐(0) 编辑
 
摘要: 配置信息用于指定NH以何种方式访问数据库, 根据这些配置信息, NH动态的创建数据访问对象并与数据库进行交互. 除了.net类库自带的Odbc, OleDb, OracleClient和SqlClient访问方式外, 在0.2版中, NH增加了用于访问MySQL和Firebird的访问方式, 这两种... 阅读全文
posted @ 2009-03-18 14:40 裴晓华 阅读(511) 评论(0) 推荐(0) 编辑
 
摘要: 为了让大家更好的了解NHibernate的功能和工作原理, 我们将对NHibernate的源代码进行全面的分析. 在此系列文章中, 我们做出以下约定: 为简化输入, 文中NHibernate均以NH代替; 若无特殊说明, 均以NHibernate 0.2.0.0的源代码为准; 文中在引用NH... 阅读全文
posted @ 2009-03-18 14:39 裴晓华 阅读(840) 评论(0) 推荐(0) 编辑
 

2009年3月17日

摘要: SQL 方言 (SQL Dialects) 你总是可以为你的数据库设置一个hibernate.dialect方言,它是NHibernate.Dialect.Dialect 的一个子类。如果你不需要使用基于native或者sequence的主键自动生成算... 阅读全文
posted @ 2009-03-17 16:34 裴晓华 阅读(1369) 评论(0) 推荐(0) 编辑
 
摘要: 当所有的映射都被Configuration解析之后,应用程序为了得到ISession实例,必须先得到它的工厂。这个工厂应该是被应用程序的所有线程共享的: ISessionFactory sessions = cfg.BuildSessionFactory(); 当然,NHibernate并不禁止你... 阅读全文
posted @ 2009-03-17 16:33 裴晓华 阅读(164) 评论(0) 推荐(0) 编辑