没有合适的资源?快使用搜索试试~ 我知道了~
NHibernate之旅系列
5星 · 超过95%的资源 需积分: 3 36 下载量 159 浏览量
2010-05-04
17:51:27
上传
评论
收藏 2.56MB DOC 举报
温馨提示
试读
64页
NHibernate之旅系列NHibernate之旅系列NHibernate之旅系列NHibernate之旅系列NHibernate之旅系列NHibernate之旅系列NHibernate之旅系列
资源推荐
资源详情
资源评论
NHibernate 之旅
NHibernate 之旅(1):开篇有益
本节内容
是什么
的架构
资源
欢迎加入 中文社区
NHIBERNATE 开篇有益 学习 有一段时间了,打算做个阶段性总结,就萌生了这个系列,这个系列参考 官方文档和
的 之夏视频教程。作为开篇,首先了解多少人在使用 ,先搞清楚 是什么?学习 的一些资源。
也欢迎大家加入 中文社区。 这个系列我使用 官方 年 月 日最新发布的 版本。开发环境是
!"# 、$%!&'( 和集成测试 插件 )*&)。如果 你第一次使用
,先到这里下载 最新版本+包括源码、发布版本、参考文档、", 文档,可选择下载-。如果用到 的扩展项目到这
里下载获得 . 最新版本。 是&) 平台的最后一个版本,关于 的更多信息请点击这里。
是什么
是一个面向&)环境的对象#关系数据库映射工具。对象关系映射+/#0((1,/20((1-表示一种技术,用来
把对象模型表示的对象映射到基于 $%的关系模型数据结构中去。
不仅仅管理&)类到数据库表的映射(包括&)数据类型到 $%数据类型的映射),还提供数据查询和获取数据的方法,大幅度减
少我们开发时人工使用 $% 和 */&) 处理数据的时间。 的目标是对于开发者通常的数据持久化相关的编程任务,解放其中的
34。并请记住 作为数据库访问层,是与你的程序紧密集成的。
的架构
你知道 到底什么样子?下面我摘取官方文档中的三幅不同的结构图稍做说明。第一幅图: 体系结构非常抽象的概览
这幅图展示了 在数据库和应用程序之间提供了一个持久层。第一幅图好像非常简单?其实
是比较复杂的。我们了解两种极端情况,轻量级和重量级架构。再来第二幅图:轻量级体系,应用程序自己提供 */&) 连接,并
且自行管理事务。
最后一张图:重量级体系:所有的底层 */&)", 都被抽象了。
资源
资源现在已经比较多了,但是大部分都是英文了,这里我仅仅挑选几个站点。
专题:(5##617#8##+中文-
官方主页:(5##99911#+英文-
参考文档 :(5##11# ###+英文-社区有中文文档下载。
之夏系列录像教程:(5##999777#+英文-
欢迎加入 中文社区 http://space.cnblogs.com/group/NHibernate
为什么叫做 中文社区呢?原因很简单,体现本地化。现在关于 很多的资料都是英文资料,中文资料少的可怜了也不
是很完整,我们努力建立在这个小组建立起来属于大家的 中文社区,在这里一起讨论 、学习 。
如果你使用 ,学习 ,欢迎加入这个小组,一起讨论 、学习 ,一起建立 中文社区。
NHibernate 之旅(2):第一个 NHibernate 程序
本节内容
开始使用 NHibernate
1.获取 NHibernate
2.建立数据库表
3.创建 C#类库项目
4.设计 Domain
4-1.设计持久化类
4-2.编写映射文件
5.数据访问层
5-1.辅助类
5-2.编写操作
6.数据访问层的测试
6-1.配置 NHibernate
6-2.测试
结语
开始使用 NHibernate
我们亲自动手,一步一步搭建一个 程序来,我以一个实际场景电子交易程序来模拟,客户#订单#产品的经典组合。由于是第一次使用
,所以我们的目的是映射一张表并完成使用 来读取数据,下面的一幅图片给了我们第一印象。我们按照基本开发软件思想
的流程一步一步完成。我使用的开发环境: !"、$%!&'(、。
1.获取 NHibernate
使用官方 年 月 日最新发布的 版本。如果你第一次使用 ,先到这里下载 最新版本+包括
源码 、发布 版本 、参 考文 档、 ", 文 档 ,可 选 择 下载 - 。如 果 用 到 的 扩 展 项目 到 这 里 下载 获 得 . 最 新 版本 。
是&) 平台的最后一个版本,关于 的更多信息请点击这里。
关于 版本的一些说明:
版本改变了 :. 延迟加载机制,有三种 种 ,. 框架动态代理方式,分别为:. 框架、%; 框架、(1 框架。
我们只要选择一种,在配置文件中配置 (':::< 节点。
如 果使 用 .*:7"': 动 态 代 理 , 引 用 :. . 程 序 集 并 配 置 (':::< 节 点 为 =((:
7>?(':::<?@:. ."':;:;:A:. .=#((:@
如 果 使 用 %;*:7"': 动 态 代 理 , 引 用 :. %; 程 序 集 并 配 置 (':::< 节 点 为 =((:
7>?(':::<?@:. %;"':;:;:A:. %;=#((:@
如 果 使 用 (1( 动 态 代 理 , 引 用 :. (1 程 序 集 并 配 置 (':::< 节 点 为 =((:
7>?(':::<?@:. (1"':;:;:A:. (1=#((:@
另外 要求&)" 以上版本+:7*)7/-,请使用 3 的,务必打上 ( 补丁。推荐使用 ! 以上版本。
2.建立数据库表
由 于 第 一 次 使 用 , 还 是 按 照 我 们 传 统 的 从 数 据 库 表 配 置 吧 。 打 开 $% 17 &'( , 新 建 一 个 新 的 数 据 库
7(,创建四个表:分别为客户表、订单表、订单产品表、产品表。
3.创建 C#类库项目
由于是我们第一个程序,所以我没有按照 *7**1 方法去设计这个程序,按照大家的常规思想来实现的,以后有机会再介绍
*7**1 设计。
注意 为什么创建 .B类库项目呢?在现在软件设计中,大多数都是采用多层架构来设计,比较经典的三层架构(页面表示层,业务逻辑层,数据
访问层)通常而言业务逻辑层和数据访问层都是使用类库设计,页面表示层用 C 应用程序设计,它引用业务逻辑层和数据访问层类库 *%% 程
序集。使用 ! 创建 .B类库的项目,命名为 7(。打开项目文件夹,在其项目文件目录上新建 % 文件夹,把下载
相关程序集文件拷贝到 % 文件夹下。如下图,这里我选择 . 框架动态代理:
创建项目,结构如下:
*7+领域模型-:用于持久化类和 /#0((1 操作
*+*%: 数据访问层-:定义对象的 .0D* 操作
*)+数据访问层测试-:对数据访问层的测试,这里我使用 单元测试框架
C:C 页面+这篇文章中暂未实现,请参考我的博客其他文章-
项目引用
*7:引用 ,. 程序集( 集合在这个程序集中-和 . 动态代理
*:引用 和 ,. 程序集和动态代理相关程序集,*7 引用
*):引用 和 ,. 程序集,796 程序集+测试框架-,*7 和 * 引用
E设计 *7
E编写持久化类
按简单传统&) 对象+"/./,"/ .%0/2+"/ :.%0/2--模型编程时需要持久化类。在 中,"/./ 通
过&) 的属性机制存取数据,就可以把它映射成为数据库表。
现在为 .7 编写持久化类来映射成为数据库表。新建一个 .7 类文件:
7(7(*7&
F
(.7
F
(, F1GGH
(1;7F1GGH
(1%7F1GGH
H
H
规则
使用属性的 1 和 来实现持久化。属性可设置为 (、、( 、( 或 (
注意 默认使用代理功能,要求持久化类不是 的,而且其公共方法、属性和事件声明为 。在这里,类中的字段要设置为
, 否 则 出 现 “ 5 , "':):(&'( 5 ) 91 :( 7: ('5
7(*7&.757 1<, ,7 <, I异常。
E编写映射文件
小 提 示 我 们 要 为 ! 添 加 编 写 配 置 文 件 智 能 提 示 的 功 能 。 只 要 在 下 载 的 里 找 到
1' 和 7((1' 两个文件并复制到 J5K"17;K KJ7K7 目录即可。
要知道怎样去加载和存储持久化类的对象。这正是 映射文件发挥作用的地方。映射文件包含了对象#关系映射所需的元数据。
元数据包含持久化类的声明和属性到数据库的映射。映射文件告诉 它应该访问数据库里面的哪个表及使用表里面的哪些字段。
这里,我为 .7 类编写映射文件。新建一 J% 文件,命名为 .77'7:
=L'7>?? 1>?!?L@
=7((1'7>?57((1?
7:>?7(*7?
7(>?7(*7&?@
=7>?.7?@
= 7>?, ?7>?.7, ?@
=1>??#@
=# @
=((:7>?;7?#@
=((:7>?%7?#@
=#@
=#7((1@
注意 J% 文件的默认生成操作为“内容”,这里需要修改为“嵌入的资源”生成,因为 是通过查找程序集中的资源文件映射实体,使
用&)0 查看程序集:
否则出现“ 5((1&'(5(57(*7&.7I异常。
3编写数据访问层
3辅助类
我们现在可以开始 了。首先,我们要从 ,;: 中获取一个 ,+ 的工作单元)。,;: 可以创建
并打开新的 。一个 代表一个单线程的单元操作。,;: 是线程安全的,很多线程可以同时访问它。, 不是线程安全
的,它代表与数据库之间的一次操作。, 通过 ,;: 打开,在所有的工作完成后,需要关闭。,;: 通常是个线程安全的
全局对象,只需要被实例化一次。我们可以使用 ; 中的单例(1)模式在程序中创建 ,;:。这个实例我编写了一个辅助类
(用于创建 ,;: 并配置 ,;: 和打开一个新的 单线程的方法,之后在每个数据操作类可以使用这个辅
助类创建 ,。
((
F
(,;:<;:G
((+-F<;:>;:+-GH
(,;:;:+-F+9.1+--.1+- ;:+-GH
(,+-F<;:/(+-GH
H
3编写操作
在 * 中新建一类 7(,编写一方法 .7, 用于读取客户信息。在编写方法之前,我们需要初始化 。
( ,F1GGH
(7(+,-F>GH
有不同的方法来从数据库中取回对象。最灵活的方式是使用 查询语言+$%-,是完全基于面向对象的 $%。
( ..7+.77-
F
+7-G
;+-G
H
(.7.7:, +7, -F=.7@+7, -GH
M编写数据访问层的测试
M配置
我们可以几种方法来保存 的配置,具体以后来介绍,这里我们使用 1'7 文件来配置,不过不必担心,这个文件我们可以
在 K.1)7( 文件夹下找到,直接复制到 *) 中修改一下配置信息和文件输出属性就可以了。
剩余63页未读,继续阅读
资源评论
- qishuhanyun2019-05-17不错的资源,能详细了解hibernate的内容
- lovebook082014-02-20这个很好,正在学习,oracle苦恼
freebeer123
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功