
NHibernate
文章平均质量分 79
soldierluo
羽毛球
展开
-
一、什么是NHibernate、为什么要用它及相关资源
一、NHibernate是什么NHibernate 是一个面向.NET 环境的对象到关系数据库映射的工具。对象关系映射(O/R Mapping,Object Relational Mapping)表示一种技术,用来把对象模型(也就是实体类)表示的对象映射到基于SQL 的关系模型数据结构(也就是数据库的表)中去。 二、为什么要用NHibernateNHibernate不仅仅管原创 2009-10-08 21:12:00 · 1811 阅读 · 0 评论 -
十四、NHibernate之一级缓存
什么是NHibernate一级缓存NHibernate一级缓存即ISession缓存,ISession缓存属于事务级缓存,是NHibernate内置的。ISession缓存中的数据只在本ISession周期内使用。ISession实例创建后即可使用ISession缓存。此后,ISession实例操作数据时,首先查询内置缓存,如果ISession缓存中存在相应数据,则直接使用缓存数据。如果不原创 2009-10-31 21:06:00 · 2277 阅读 · 0 评论 -
十三、NHibernate之对象状态
引入在程序运行过程中使用对象的方式对数据库进行操作,这必然会产生一系列的持久化类的实例对象。这些对象可能是刚刚创建并准备存储的,也可能是从数据库中查询的,为了区分这些对象,根据对象和当前会话的关联状态,我们可以把对象分为三种:1. 瞬时对象:对象刚刚建立。该对象在数据库中没有记录,也不在ISession缓存中。如果该对象是自动生成主键,则该对象的对象标识符为空。2.原创 2009-10-30 11:18:00 · 1374 阅读 · 0 评论 -
十二、NHibernate之SchemaExport工具
说明使用领域驱动开发,我觉得还不太实际,或者说对于我来说条件还不成熟,因为我对NHibernate还不太熟悉,就现时来说,使用数据库驱动开发还是最好的选择,所以,我这里暂时先不管SchemaExport如何使用,而将更多的精力投入到对NHibernate的学习和实践中去。所以这一篇现在只起个占位的作用。引入我其实都是一直先编写持久化类和映射文件,然后使用SchemaExport工具生成原创 2009-10-30 10:53:00 · 2297 阅读 · 1 评论 -
十二、NHibernate之代码生成工具
说明这篇文章是完全转载自李永京的博客,地址:http://www.cnblogs.com/lyj/archive/2008/11/10/1330542.html。我看了下,也跟着实际操作了下,生成代码确实很方便,但是生成的代码却很难令人满意,不论从代码量还是从结构抑或复杂度来说,对我都是很大的挑战,更遑论今后的维护之类。所以,以我的感觉来说,代码生成器是很好的东西,但是需要自己来根据自己的需求原创 2009-10-30 09:38:00 · 7403 阅读 · 2 评论 -
十一、NHibernate之调用储存过程
说明我们依次从删除对象、新建对象、更新对象、查询对象来介绍在NHibernate中如何使用存储过程的整个详细过程。在NHibernate的映射文件中,在Class元素中提供了、、元素用于删除、新建、更新对象,注意这三个元素顺序唯一,也就是说在配置文件里,这三个配置节的顺序是固定的。在根元素提供了元素用来查询对象。准备虽然我们在NHibernate.cfg.xml文件中配置了proper原创 2009-10-27 11:54:00 · 7152 阅读 · 0 评论 -
十、NHIbernate之使用视图
一、新建视图create view ViewCustomeras( select c.firstName+c.lastName as fullName, o.orderId, o.orderDate, count(op.product) as productNum from Customer c原创 2009-10-26 08:58:00 · 4789 阅读 · 1 评论 -
九、NHibernate之延迟加载与立即加载
概念什么是延迟加载:所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。可以简单理解为,只有在使用的时候,才会发出sql语句进行查询,数据是分N次读取。什么是立即加载:所谓立即加载既是所有的相关数据一次被读取出来,而不是分N次。一、延迟加载:NHibernate延迟加载须有Session存在,且配置为Lazy=true(默认)DAL中编写方法如下: /原创 2009-10-22 22:41:00 · 8966 阅读 · 1 评论 -
八、NHibernate关系之——多对多
多对多关系废话不多说,看图:这里我们主要是要解决Order表和Product表之间的多对多的关系,相信有过数据库设计经验的人是很容易理解的,OrderProduct是一个关系表,而Order和Product表都是实体表,在数据库中多对多的的实体关系都通过在两个实体间增加一个关系表来解决,如下: 通过在NHibernate中配置Order和Product之间的关系,我们可原创 2009-10-20 09:14:00 · 11467 阅读 · 1 评论 -
七、NHibernate关系之——一对多
一对多关系在数据库中,表与表之间的关系有一对一、一对多和多对多三种,他们是关系数据库最重要的表现之所在,如果丢失了表间的关系,那么一个数据库中的数据就只是一堆没有意义的符号。NHibernate不仅可以反映实体和表的对应关系,而且可以反映表与表之间的这些关联关系。如下图:我们在之前建立的数据模型中,包含两个表,一个是Customer表,另一个是Order表,其中Order表的外键C原创 2009-10-20 09:09:00 · 3939 阅读 · 6 评论 -
五、NHibernate之事务处理
一、事务概述Ø 定义:所谓事务是指其中的一个或多个操作要么都执行要么都不执行Ø 为什么要使用:确保数据的安全和完整Ø 何时使用:在任何时候都要使用事务,即使是在读取、查询数据的时候,为什么呢?因为你不清楚数据库什么时候操作失败,如何恢复原来数据。而的事务可以帮助我们完成这些事情。Ø 注意事项:请结合using()和异常处理来一起使用 二、事务处理举例以下函数添加原创 2009-10-12 17:15:00 · 4852 阅读 · 0 评论 -
四、NHibernate之insert、delete、update操作
前言NHibernate的插入、删除、修改操作都很简单,下面列出的例子可以很容易的理解,但是其中的数据请根据实际情况来做相应的修改。 一、新增数据DAL中新增代码如下: public int CreateCustomer(Customer customer) { int newId = (int)session.Save原创 2009-10-12 15:39:00 · 3938 阅读 · 0 评论 -
六、NHibernate查询之并发控制
一、什么是并发控制?当许多人试图同时修改数据库中的数据时,必须实现一个控制系统,使一个人所做的修改不会对他人所做的修改产生负面影响。这称为并发控制。比如说,用户A和B同时更新一个账号,其中用户A只需要将Firstname修改为aaa,其它字段不变;而用户B只需将Lastname修改为bbb,其它字段不变并发控制理论根据建立并发控制的方法而分为两类: 二、悲观并发控制(Pessi原创 2009-10-13 14:45:00 · 3553 阅读 · 0 评论 -
三、NHibernate查询之HQL&Criteria
一、什么是HQL(NHibernate Query Language)查询语言Ø 定义:NHibernate查询语言(HQL,NHibernate Query Language)是NHibernate特有的基于面向对象的SQL查询语言,它具有继承、多态和关联等特性。Ø 它如何运行:HQL查询的是通过ORM模式映射出来的类,然后再根据映射文件和hibernate.cfg.xml文原创 2009-10-12 10:19:00 · 4930 阅读 · 0 评论 -
二、第一个NHibernate程序
一、准备要运行第一个NHibernate程序需要两个额外的DLL和两个xsd文件,他们可以在从官网上下载的文件里找到,DLL分别是NHibernate.dll和NHibernate.ByteCode.Castle.dll,xsd文件分别是nhibernate-configuration.xsd和nhibernate-mapping.xsd,我们可以先将其复制出来放到一个单独的叫NHiberna原创 2009-10-08 21:14:00 · 2843 阅读 · 0 评论 -
十五、NHibernate之二级缓存
什么是NHibernate二级缓存NHibernate二级缓存由ISessionFactory创建,可以被所有的ISession共享。在NHibernate中,当我们启用NHibernate二级缓存。使用ISession进行数据操作时,NHibernate首先从内置缓存(一级缓存)中查找是否存在需要的数据,如果内置缓存不存在需要的数据,则查询二级缓存,如果二级缓存中存在所需数据,则直接使用原创 2009-11-01 10:22:00 · 4279 阅读 · 0 评论