您的位置:首页 > 其它

[专题]O/R 实体关系映射

2004-11-10 16:38 447 查看
SRC:http://www.cnblogs.com/ezwyj/archive/2004/11/09/62083.html


O/R

[align=left]       当程序员在开发一个应用程序时,总是会处理一些数据,在很多情况下,你会想用某种方法来存储它们。有很多方法能够实现,例如纯文本文件,XML文件输入到数据库,甚至可以是一些外来的数据容器。但如果是处理需要高性能高可靠性查询的数据,那就一定要使用关系型数据库(例如Oracle,SQL Server)。[/align]
[align=left]另一方面,我们还要考虑到应用程序开发所使用的编程语言。如今的语言通常都是面向对象的,就如.Net Framework中使用的语言,例如VB .Net,C#等等。在这些面向对象的语言中,很有可能建立现实的构造和程序构造的映射。在IT工程的分析阶段,可能会产生一个面向对象的模型,例如一个类图。所有在真实世界中我们想要处理的数据,都对应面向对象模型中一个或多个类。每一个项的特性,转换成一个特定类的属性(例如,Customer类的Name属性)。上面提到的面向对象模型,在VB .Net,C#或别的含有面向对象特征的语言中,可以实现,结果就是类集被实例化为对象。例如,你创建了一个Customer类的实例,并把这个对象的Name属性设置为“John Doe”,这样你就有了一个代表真实世界中的John Doe的Customer对象。[/align]
[align=left]这些对象是存储在内存中的,所以如果应用程序退出或计算机关闭,这些对象就消失了。在大多数情况下,你大概想把这些对象存储在某个地方,使数据不会消失,例如存放在硬盘上。在.Net Framework中使用XMLSerializer和XMLWriter结合就能很容易的实现。具体做法是:把对象序列化为XML,然后将XML写到硬盘上。这个工作对存储数据来说很伟大,哪怕是复杂的对象树,也可以被序列化,然后从XML反序列化,重新成为对象。但如果你将大量数据存储在XML文件中,查询数据将会变得非常慢。例如,你想要在1000个序列化的对象池中找到John Doe顾客,你需要一个一个的读取,直到找到需要的对象。如果你需要高性能的查询大量的数据,在大多数情况下你就要使用关系性数据管理系统(RDMS),例如微软的SQL Server。在这样的系统中,数据存放在索引表中,互相都有联系;于是高性能复杂查询成为了可能。所以我们再一次需要将一个模型映射到另一个模型,这一次是一个面向对象模型映射到一个关系模型。这样做了之后,在我们的编程环境下使用对象模型,以及将真实数据存入一个关系数据库,成为了可能。这就是O/R Mapping系统(对象/关系映射系统)可以发挥作用的地方。一个O/R Mapping系统位于面向对象模型和关系模型之间,于是,它把对象转换成了关系型数据。 [/align]
[align=center] [/align]
[align=left]表一显示了各自承担的角色: [/align]
[align=left] [/align]
[align=center]真实世界[/align]
[align=center]面向对象模型[/align]
[align=center]关系模型[/align]
[align=center]数据定义[/align]
[align=center]无[/align]
[align=center]类[/align]
[align=center]表[/align]
[align=center]数据显示[/align]
[align=center]真实对象[/align]
[align=center]对象[/align]
[align=center]纪录[/align]
[align=center]保存方式[/align]
[align=center]无[/align]
[align=center]内存[/align]
[align=center]物理磁盘[/align]
[align=center]优点[/align]
[align=center]无[/align]
[align=center]容易使用,映射真实世界的对象[/align]
[align=center]持续保存对象,可以进行高性能和复杂查询[/align]
[align=center]缺点[/align]
[align=center]无[/align]
[align=center]非持续性[/align]
[align=center]不能映射真实对象,对真实对象是一种技术性的表现[/align]
[align=center]表一[/align]
推荐学习文档
O/R Mapping 研究报告(1) ---业务实体层的设计方案选择

O/R Mapping 研究报告(2) ---什么是O/R Mapping?

O/R Mapping 研究报告(3) --- 为什么要采用O/R Mapping?

O/R Mapping 研究报告(4) --- ORM典型工具介绍

O/R Mapping 研究报告(5) --- 使用NHibernate进行开发

 
 在nhibernate中执行SQL语句和存储过程

nhibernate入门系列: many-to-many映射  

 nhibernate入门系列 NHB的MAP文件使用  

 nhibernate入门系列 值集合映射  

 nhibernate入门系列: one-to-one映射  

 nhibernate入门系列: 使用Criteria载入对象  

 nhibernate入门系列: 对象持久化操作  

 nhibernate入门系列: one-to-many映射  

 
[专题] nhibernate源码分析之九: 事务处理  

[专题] NHibernate源码分析之三(续):数据持久化  

[专题] nhibernate源码分析之八: 解析HQL  

[专题] nhibernate源码分析之七: HQL数据加载  

[专题] nhibernate源码分析之六: Criteria数据加载

[专题] nhibernate源码分析之五: 对象标识  

[专题] nhibernate源码分析之四: 持久化操作与SQL语句

[专题] nhibernate源码分析之三: 会话与持久化操作  

[专题] nhibernate源码分析之二: 会话工厂  

[专题] NHibernate源码分析之一: 配置信息

[专题] NHibernate源码分析系列之开篇

 
参考网址
 
http://marshine.nease.net/index.ssi

http://blog.aspcool.com/tim

http://www.narchitecture.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: