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

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

Feedback

#  re: [专题]O/R 实体关系映射 2004-11-10 01:13 Rickie
Good article. Thanks.
  

#  re: [专题]O/R 实体关系映射 2004-11-10 07:57 学习.NET
如何结合.net实现ORM,而不是从头开始创建一套ORM的实现方式,是我现在所关心的。

利用.net现存的数据处理架构,用什么方式实现ORM,做到简单、易理解、易用、性能较好,应该考虑一个什么样的技术方案?

关键是在性能和易操作性方面达到最佳结合,比如用DataSet时简单且易操作了,有人说性能不好,自定义业务实体必非常复杂,很多地方要实现一些.net现有的东西,有没有好的方案,DTO也要用,性能也要好?
  

#  re: [专题]O/R 实体关系映射 2004-11-10 08:34 Jeacey
好东东!
希望有更多的介绍!
  

#  re: [专题]O/R 实体关系映射 2004-11-10 08:40 yunyun
真的不错!谢谢!
  

#  re: [专题]O/R 实体关系映射 2004-11-10 08:52 jiangyu
太感谢了,谢谢
  

#  re: [专题]O/R 实体关系映射 2004-11-10 10:45 听棠
nhibernate的实现功能在我的SmartPersistenceLayer(SPL)中也都实现了,除了one-to-many等这些关系处理,但我感觉,SPL更简单,更容易上手,介绍的文章:
http://www.cnblogs.com/tintown/archive/2004/11/08/61461.html
我现在在准备发布一些使用文档,我相信,SPL有不足的地方,也有可取的地方,而且SPL已经经过了不少项目的考验了,是一个成熟可行的PL,当然也在期待大家的宝贵意见,继续完善。
如果你不想看太多的理论,而想亲自体验效果的话,可以选择SPL。
  

#  re: [专题]O/R 实体关系映射 2004-11-10 13:37 Yok
晕...能方便灵活处理实体之间的关系是ORM必备的特性之一.ORM=object RELATIONAL mapping
  

#  [专题]O/R 实体关系映射 (ezwyj)[TrackBack] 2004-12-29 08:13 蓝色游侠
Ping Back来自:blog.csdn.net
蓝色游侠引用了该文章,地址: http://blog.csdn.net/happyjun2000/archive/2004/12/29/232770.aspx
  

#  [专题]O/R 实体关系映射 (ezwyj)[TrackBack] 2004-12-29 08:13 蓝色游侠
Ping Back来自:blog.csdn.net
蓝色游侠引用了该文章,地址: http://blog.csdn.net/happyjun2000/archive/2004/12/29/232771.aspx
  

#  Snake.Net中的ORM 2005-07-19 13:56 soulroom
Snake.Net中的数据映射是基于DataSet对象的。DataSet 对象是 Microsoft .NET 框架中数据访问的关键部分,是可保存表、视图和关系的内存中对象。Snake.Net中的数据映射是通过定义一个描述业务实体的DataSet(如图1.1),将其所需要应用到的数据表结构定义(表以及表与表之间的关系)进行描述。然后通过构建一个业务实体类(Class)并将类内特定域(Field)映射到DataSet中相对应数据表内的字段而实现的。

Snake.Net代码包内包括以下内容:
所有代码在Eastasp.Enterprise.Core目录下,
所有需要使用到的类库在library目录下
演示事例在Eastasp.Enterprise.Core.Samples目录下
数据库脚本在scripts目录下(当前仅提供MSSQL)
目录DataBindObjectBuilder下提供了一个实体类生成工具DataBindObjectBuilder你只需要选择一个特定的xsd文件,然后按生成即可。

Snake.Net目前提供的是测试版本,近供有兴趣的同仁参考和使用
如果你在试用的过程中发现不足之处,欢迎指正。

详细情况请访问我的Blog
http://blog.csdn.net/soulroom/

下载地址
http://www.eastasp.com/download.files/products/snake.net.rar
http://download2.eastasp.com/snake.net.rar
#  re: [专题]O/R 实体关系映射 2004-11-10 01:13 Rickie
Good article. Thanks.
  

#  re: [专题]O/R 实体关系映射 2004-11-10 07:57 学习.NET
如何结合.net实现ORM,而不是从头开始创建一套ORM的实现方式,是我现在所关心的。

利用.net现存的数据处理架构,用什么方式实现ORM,做到简单、易理解、易用、性能较好,应该考虑一个什么样的技术方案?

关键是在性能和易操作性方面达到最佳结合,比如用DataSet时简单且易操作了,有人说性能不好,自定义业务实体必非常复杂,很多地方要实现一些.net现有的东西,有没有好的方案,DTO也要用,性能也要好?
  

#  re: [专题]O/R 实体关系映射 2004-11-10 08:34 Jeacey
好东东!
希望有更多的介绍!
  

#  re: [专题]O/R 实体关系映射 2004-11-10 08:40 yunyun
真的不错!谢谢!
  

#  re: [专题]O/R 实体关系映射 2004-11-10 08:52 jiangyu
太感谢了,谢谢
  

#  re: [专题]O/R 实体关系映射 2004-11-10 10:45 听棠
nhibernate的实现功能在我的SmartPersistenceLayer(SPL)中也都实现了,除了one-to-many等这些关系处理,但我感觉,SPL更简单,更容易上手,介绍的文章:
http://www.cnblogs.com/tintown/archive/2004/11/08/61461.html
我现在在准备发布一些使用文档,我相信,SPL有不足的地方,也有可取的地方,而且SPL已经经过了不少项目的考验了,是一个成熟可行的PL,当然也在期待大家的宝贵意见,继续完善。
如果你不想看太多的理论,而想亲自体验效果的话,可以选择SPL。
  

#  re: [专题]O/R 实体关系映射 2004-11-10 13:37 Yok
晕...能方便灵活处理实体之间的关系是ORM必备的特性之一.ORM=object RELATIONAL mapping
  

#  [专题]O/R 实体关系映射 (ezwyj)[TrackBack] 2004-12-29 08:13 蓝色游侠
Ping Back来自:blog.csdn.net
蓝色游侠引用了该文章,地址: http://blog.csdn.net/happyjun2000/archive/2004/12/29/232770.aspx
  

#  [专题]O/R 实体关系映射 (ezwyj)[TrackBack] 2004-12-29 08:13 蓝色游侠
Ping Back来自:blog.csdn.net
蓝色游侠引用了该文章,地址: http://blog.csdn.net/happyjun2000/archive/2004/12/29/232771.aspx
  

#  Snake.Net中的ORM 2005-07-19 13:56 soulroom
Snake.Net中的数据映射是基于DataSet对象的。DataSet 对象是 Microsoft .NET 框架中数据访问的关键部分,是可保存表、视图和关系的内存中对象。Snake.Net中的数据映射是通过定义一个描述业务实体的DataSet(如图1.1),将其所需要应用到的数据表结构定义(表以及表与表之间的关系)进行描述。然后通过构建一个业务实体类(Class)并将类内特定域(Field)映射到DataSet中相对应数据表内的字段而实现的。

Snake.Net代码包内包括以下内容:
所有代码在Eastasp.Enterprise.Core目录下,
所有需要使用到的类库在library目录下
演示事例在Eastasp.Enterprise.Core.Samples目录下
数据库脚本在scripts目录下(当前仅提供MSSQL)
目录DataBindObjectBuilder下提供了一个实体类生成工具DataBindObjectBuilder你只需要选择一个特定的xsd文件,然后按生成即可。

Snake.Net目前提供的是测试版本,近供有兴趣的同仁参考和使用
如果你在试用的过程中发现不足之处,欢迎指正。

详细情况请访问我的Blog
http://blog.csdn.net/soulroom/

下载地址
http://www.eastasp.com/download.files/products/snake.net.rar
http://download2.eastasp.com/snake.net.rar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值