没有合适的资源?快使用搜索试试~ 我知道了~
Nhibernate从入门到精通
4星 · 超过85%的资源 需积分: 0 26 下载量 29 浏览量
2011-12-22
21:42:06
上传
评论 5
收藏 4.06MB PDF 举报
温馨提示
试读
87页
NHibernate 入门之旅教程 PDF版,写这个小书也算是对自己学习NHibernate的一个总结吧。再次向对NHibernate陌生的朋友介绍一下NHibernate,它是一个面向.NET 环境的对象/关系数据库映射工具。用来把对象映射到基于SQL 的关系模型数据结构中去。因此本书围绕这些主要讲解NHibernate是什么、如何建立第一个NHibernate程序、NHibernate实例分析、NHibernate基本数据库操作:探索Insert, Update, Delete等、并发控制、初探延迟加载机制等内容。
资源详情
资源评论
资源推荐
郑重声明:本教程出自博客园,讲解深刻细致,感谢刘东老师的无私奉献,笔者将之整理
后提供给大家,供学习交流之用,欢迎需要的同学下载!
NHibernate 从入门到精通系列(1)——NHibernate 概括
内容摘要
NHibernate
简介
ORM
简介
NHibernate
优缺点
一、NHibernate 简介
什么是?NHibernate?NHibernate 是一个面向.NET 环境的对象/关系数据库映射工具。
对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对
象模型表示的对象映射到基于 SQL 的关系模型数据结构中去。
在今日的企业环境中,把面向对象的软件和关系数据库一起使用可能是相当麻烦和浪费
时间的。而 NHibernate 不仅仅管理.NET 类到数据库表的映射(包括.NET 数据类型到 SQL
数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL
和 ADO.NET 处理数据的时间。
NHibernate 的目标主要是用于与数据持久化相关的编程任务,能够使开发人员从原来枯
燥的 SQL 语句的编写中解放出来,解放出来的精力可以让开发人员投入到业务逻辑的实现
上。对于以数据为中心的程序,开发人员往往是在数据库中使用存储过程来实现商业逻辑,
这种情况下 NHibernate 可能不是最好的解决方案,但对于那些基于.NET,并且能够实现 OO
业务模型和商业逻辑的中间层应用,NHibernate 是最有用的。NHibernate 可以帮助用户消除
或者包装那些针对特定厂商的 SQL 代码,并且帮用户把结果集从表格式的表示形式转换成
一系列的对象。
NHibernate 是一个目前应用的最广泛的开放源代码的对象关系映射框架,它对 Java 的
JDBC(类似于 ADO.Net)进行了非常轻量级的对象封装,使得程序员可以随心所欲的使用
对象编程思维来操纵数据库,目前在国内 Java 开发界已经颇为流行,Hibernate+Spring 往往
是很多 Java 公司招聘的要求。而 NHibernate,顾名思义,如同 NUnit,NAnt 一样,是基于.Net
的 Hibernate 实现,但是目前介绍 NHibernate 的资料非常少,缺少一个系统完整的教程来全
面的展现和深入 NHibernate,而且现在 NHibernate 的文档又残缺不全,少的可怜,很多
NHibernate 的学习者往往都是通过 Hibernate 的文档来学习,但是毕竟不是所有的.Net 开发
者都熟悉 Java,也不是所有的人都有精力有时间去学习 Java,所以,我准备开始一个 Step by
Step 的 NHibernate 教程,以便有兴趣的朋友能够快速的熟悉 NHibernate,能够更快地体验
NHibernate 的开发乐趣。
NHibernate 是一个基于.Net 的针对关系型数据库的对象持久化类库。NHibernate 来源
于非常优秀的基于 Java 的 Hibernate 关系型持久化工具。
NHibernate 从数据库底层来持久化你的.Net 对象到关系型数据库。NHibernate 为你处
理这些,远胜于你不得不写 SQL 去从数据库存取对象。你的代码仅仅和对象关联,NHibernat
自动产生 SQL 语句,并确保对象提交到正确的表和字段中去。
二、ORM 简介
什么是 ORM?对象-关系映射(Object/Relation Mapping,简称 ORM),是随着面向对
象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流
开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系
数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数
据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多
关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程
序对象到关系数据库数据的映射。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数
据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,
对象关系映射技术应运而生。
让我们从 O/R 开始。字母 O 起源于"对象"(Object),而 R 则来自于"关系"(Relational)。几
乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向
对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。
如果打开你最近的程序(如,PetShop4.0),看看 DAL(数据库访问层)代码,你肯定会看
到很多近似的通用的模式。我们以保存对象的方法为例,你传入一个对象,为 SqlCommand
对象添加 SqlParameter,把所有属性和对象对应,设置 SqlCommand 的 CommandText 属性
为存储过程,然后运行 SqlCommand。对于每个对象都要重复的写这些代码。除此之外,还
有更好的办法吗?有,引入一个 O/R Mapping。实质上,一个 O/R Mapping 会为你生成 DAL。
与其自己写 DAL 代码,不如用 O/R Mapping。你用 O/R Mapping 保存,删除,读取对象,
O/R Mapping 负责生成 SQL,你只需要关心对象就好。
三、NHiberante 的优缺点
3.1 优点
(1).面向对象:NHiberante 的使用时只需要操纵对象,使开发更对象化,抛弃了数据库
中心的思想,完全的面向对象思想。
(2).透明持久化:带有持久化状态的、具有业务功能的单线程对象,此对象生存期很短。
这些对象可能是普通的 POCO(简单传统 CLR 对象),这个对象没有实现第三方框架或者接
口,唯一特殊的是他们正与(仅仅一个)Session 相关联。一旦这个 Session 被关闭,这些对
象就会脱离持久化状态,这样就可被应用程序的任何层自由使用。(例如,用作跟表示层打
交道的数据传输对象。)
(3).它没有侵入性,即所谓的轻量级框架。正因为它具有透明持久化的优点,它才没有
侵入性,才是一个轻量级框架。恒定一个框架为重量级、还是轻量级,是根据其侵入性而定
夺的。而 NHibernate 就是一个轻量级 ORM 框架。
(4).较好的移植性:支持多种数据库,便于数据库的迁移。
(5).缓存机制:提供一、二级缓存和查询缓存。
(6).开发效率:众所周知,使用 NHibernate 可以简化程序开发,从而达到快速开发的目
的。作为软件公司,项目管理的关键就是控制开发成本。正因为使用 NHibernate 后所写的
代码量减少了,相对于原先使用“SqlHelper、DAL、BLL”开发程序的项目周期缩短了,成本
就降低了。
3.2 缺点
(1).内存消耗:直接使用“SqlHelper、DAL、BLL”无疑是最省内存的。使用 NHibernate
后,内存开销比较大,这点是毋庸置疑的。
(2).批量数据库的处理:由于 NHibernate 是基于面向对象的 ORM 框架,处理数据库的
方式是针对单个对象的。对数据库的增、删、改都是正对一条记录而言。对于批量修改、删
除数据,不适合用 NHiberante。这也是所有 OR 框架弱点,其原因,我认为是在于与缓存机
制的冲突。
(3).较多使用数据库特性时,也不适合使用 NHiberante。如数据库中大量的存储过程、
触发器、特点的 SQL 语句。
(4).表关系比较混乱时也不适合使用 NHiberante。NHibernate 只适合于表与表的关系比
较明确的环境中。如本应该建立外键的,没有建立外键。这时使用 NHiberante 不仅没有减
少工作量,反而增加了工作量。
(5).学习成本:相对于 NHibernate 来说,使用“SqlHelper、DAL、BLL”操作数据库,学
习成本比较低,而且上手很快。使用 NHibernate 需要有一定 OOP(面向对象编程)和 OOD(面
向对象设计)的基础,这对于基础薄弱的程序员来说,从面向过程的编程到面向对象的编程,
需要一定的投入;一般情况下需要学习1个月左右的时间才能够深入 NHiberante。
NHibernate 从入门到精通系列(2)——NHibernate 环境与结构体系
内容摘要
NHibernate
的开发环境
NHibernate
的结构体系
NHibernate
的配置
一、NHibernate 的开发环境
NHibernate 的英文官方网站为:http://nhforge.org/
NHibernate 目前最新的版本是3.0.0.GA,其下载地址是:
http://sourceforge.net/projects/nhibernate/files/NHibernate/
我可以下载 NHibernate-3.0.0.GA-bin.zip(编译后的 dll),也可以下载
NHibernate-3.0.0.GA-src.zip(源文件),另外再下载 NHCH-3.0.0.GA-bin.zip(NHibernate 二级缓
存库)。
图1.1
下载并解压 NHibernate-3.0.0.GA-bin.zip 后,如图1.1所示。
其中名为“Required_Bins”的文件夹所放置的是 NHiberante 主程序的 dll 程序集。
(1).Antlr3.Runtime.dll 为:Antlr 的程序集。Antlr(ANother Tool for Language
Recognition)是一个工具,它为我们构造自己的识别器(recognizers)、编译器(compiler)
和转换器(translators)提供了一个基础。通过定义自己的语言规则,Antlr 可以为我们生成
相应的语言解析器,这样便可以省却了自己全手工打造的劳苦。
(2).Iesi.Collections.dll 为:NHibernate 程序的集合库,因为在.NET4.0之前,没有提
供 ISet 这样的集合,所以 NHiberante 框架的设计者们就将 ISet 这样的集合放置在这个程序
集里。我建议 NHiberante 框架的设计人员,在.NET4.0以后的程序,使用
System.Collections.Generic.ISet<T>这个接口。
(3).NHibernate.dll 为主程序集
(4).Remotion.Data.Linq.dll 为:NHibernate to Linq 的类库。
(5).nhibernate-configuration.xsd 和 nhibernate-mapping.xsd 分别为 NHibernate 程序配
置和映射配置的 xsd 文件,我们把这两个文件复制到 Microsoft Visual Studio 安装目录的
\Xml\Schemas 下,就会有 xml 的自动提示功能。
名为“Required_For_LazyLoading”的文件夹所放置的是 NHiberante 延迟加载代理用
到的程序集,其中提供了 Castle、LinFu、Spring 这三种代理类。我选择其中一项就可以
了。
名为“Configuration_Templates”的文件夹所放置的是 NHiberante 的配置模板。已给出
了 FireBird、MSSQL、MySql、Oracle、PostgreSQL、SQLite 的配置模板。
二、NHiberante 的结构体系(Architecture)
图2.1
从图2.1可以看出,NHibernate 使用数据库和配置信息来为应用程序提供持久化服务(以
及持久的对象)。
我们来更详细地看一下 NHibernate 运行时体系结构。由于 NHibernate 非常灵活,且支
持多种应用方案, 所以我们这只描述一下两种极端的情况。“轻型”的体系结构方案,要求
应用程序提供自己的 ADO.NET 连接并管理自己的事务。这种方案使用了 NHibernate API
的最小子集:
图2.2
剩余86页未读,继续阅读
公子锡
- 粉丝: 0
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1