摘要 有三种方式可以实现NHibernate运行时监控,监控的信息包括:执行了的SQL语句.NHibernate执行过程.数据库性能分析.这对我们学习NHibernate有很大的帮助,在工作中也能快速定位问题,最好是能够掌握他们. 1. LogSqlInConsole 修改上一节的SessionFactory属性,添加行x.LogSqlInConsole = true; public static ISessionFactory SessionFactory { get { if (_sessi…
第一章:NHibernate基础 NHibernate介绍 第一个NHibernate工程 简单的增删改查询 运行时监控 NHibernate配置 数据类型映射 Get/Load方法 NHibernate批量更新 NHibernate事务 NHibernate组件 使用程序集管理NHibernate项目 NHibernate Session管理 第二章:NHibernate对象状态.缓存与并发控制 NHibernate对象状态 NHibernate一级缓存 NHibernate二级缓存上 NHi…
摘要 这篇文章介绍NHibernate最实用的内容:关系映射. NHibernate的关系映射方式有三种: Set:无序对象集合,集合中每一个元素不能重复. List:有序对象集合,集合中的元素可以重复. Bag:无序对象集合,集合中的元素可以重复. Map:键值对集合,相当于Hashtable或Dictionary. 这篇文章以一对多关系为例,介绍怎样在NHibernate中建立一对多关系映射.一对多关系是在现实项目中最经常碰到的一种关系.后面文章介绍多对多关系. 这篇文章的附件:NHiber…
摘要 从这一节起,介绍NHibernate Mapping的内容.前面文章都是使用的NHibernate XML Mapping.NHibernate XML Mapping是NHibernate最早最成熟的Mapping方法.其他的Mapping方法都是基于XML Mapping的思想进行的“变种”,要么暂时不能完全像XML Mapping那样功能丰富.其他的Mapping方法目前包括:Fluent Mapping.Attribute Mapping和Mapping by Convention…
摘要 上一篇文章介绍了NHibernate HQL,他的缺点是不能够在编译时发现问题.如果数据库表结构有改动引起了实体关系映射的类有改动,要同时修改这些HQL字符串.这篇文章介绍NHibernate面向对象的Criteria查询.他提供了很多API接口,可以实现“私人订制”式的面向对象查询. 作为对照,本篇文章将上篇文章的八个HQL查询全部用Criteria查询写一遍,读者可以自己感受下他们之间的区别. 本篇文章的代码可以到NHibernate查询下载 1.创建Criteria对象,查询所有Cu…
摘要 NHibernate的延迟加载机制是很重要的内容.通过关系映射将数据库表之间的关系映射成对象之间的关系,如果没有延迟加载机制,从主表的一个对象的查询将直接查询出所有与该对象关联的其他对象,如果关联的对象上还有其他的关联对象,还要去查询其他的对象.如果这张“网”非常大,或者关联的数据库记录非常多的话,每次查询主表记录都要把整个数据库都查询一遍,这样效率会非常低下.为了解决这个问题产生了NHibernate延迟加载.对一些属性设置延迟加载,只在对象访问到这些属性的时候才去查询数据库,很大程度上…
摘要 NHibernate是一个成熟的开源的面向对象的.net映射框架.大量的实际项目中正在使用该框架.他是建立在ADO.Net基础之上.目前的版本是NHibernate 4.0.4.本系列文章都是基于NHibernate 4.0版本. 1. 什么是ORM? ORM指Object Relational Mapping.他是一种让你可以在面向对象和关系数据库之间互相映射的技术. 现实世界中,每个事物都是对象.我们称具有自己数据属性的事物为对象. 关系世界都是以集合为基础的表和数据行记录.这不同于面…
摘要 前面文章介绍了NHibernate对简单.net数据类型的映射对照表.NHibernate也可以映射复杂数据类型,这里介绍通过组件映射NHibernate值对象. 1. NHibernate引用对象和NHibernate值对象 NHibernate引用对象:指的是具有主键值的NHibernate实体对象,他必须是另一个NHibernate实体对象的属性.他所属的对象也可以理解为主对象,有一个从属的指向关系.例如:Order对象有个属性Customer,表示这个Order对象是属于哪个Cus…
摘要 NHibernate的二级缓存由SessionFactory管理,由所有Session共享. NHibernate缓存读取顺序: 首先从一级缓存中读取,如果一级缓存对象存在,则读取一级缓存对象并返回 如果一级缓存对象不存在,则读二级缓存. 如果二级缓存对象存在,则读取二级缓存里的对象并返回 如果二级缓存对象不存在,则读数据库 二级缓存一般存储不发生变化的数据,如果数据经常要进行修改删除操作,不宜使用缓存 1. NHibernate二级缓存设置 NHibernate的二级缓存在hiberna…
摘要 上一节对NHibernate二级缓存做了简单介绍,NHibernate二级缓存是由SessionFactory管理的,所有Session共享.这一节介绍二级缓存其他两个方面:二级缓存查询和二级缓存管理. 1. NHibernate二级缓存查询 NHibernate二级缓存查询是指NHibernate将查询记录的集合放到二级缓存中,之后每次查询都可以从二级缓存中拿查询记录信息. 二级缓存使用步骤: 1)在hibernate.cfg.xml文件中,使用cache.use_query_cache…