我们为什么使用ORM?

news/2024/7/7 12:42:46
博客园在推广ORM方面的确做了很大的贡献,很多的程序员开始使用ORM,不用写SQL的喜悦让他们激动不已,可是好景不长,他们很快发现众多的烦恼一个接一个的出现了。

很遗憾,我并不打算在这篇文章中解决这些问题,因为的确存在这些问题,而且目前没有完美的解决方法。那么既然这样,我们为什么要使用ORM呢?难道真的是为了不使用SQL吗?

还是要看O - R ,我们为什么要将关系型的数据转化成Object的方式,DataSet的方式难道不好吗?和数据库的表现还是很一致,又简单又方便,为什么先辈们要兴师动众的转化为Object。
我们知道,Object是可以继承的,是可以使用接口的,而Relation没有这个概念。就是因为这一点,我们将实体设计成Object方法,从而获取了大量的优势。
例如:我可以在程序中检测实体是否支持IVersionObject接口,如果支持,我们将自动做版本控制,而如果你给我一个DataSet,那我将无法检测(不要告诉我检测是否存在Version字段)。通过这个特性我们将可以自动化处理很多的事情。
又如,我设计了一个单据实体的基类,包含了SheetCode、SheetDate等等字段,然后我的OrderSheet继承自SheetBase,他们将自动获取到这些标准的字段,而且我的基础类可以自动帮助我处理很多统一的规则,使程序更加稳健和统一。而这个Relation的东西是非常难做到的。

市面上有很多的ORM系统,鱼龙混杂,事实上,相当多的系统根本无法利用Object的继承特性,他们还是一堆的如何做一对多、多对多的概念。根本没有了解到ORM的精髓就做出来。

在这里我需要解释几个误解:
1、ORM使我们摆脱了SQL,但并不代表我们不再使用SQL,事实上,复杂的查询和报表我仍然推荐使用SQL,良好的系统应该可以兼容以前的方式;
2、微软在表模型(Relation)上花费了无数的精力,所以目前Relation的一揽子解决方案是最完整,最好的。但我们看到,微软在.NET 2.0中对Object方式的绑定支持更近了一步,随着LinQ、XAML等很多后续技术的发展,相信领域模型(Object)的完整解决方案将更加完整;
3、ORM更适合复杂的系统(这里使用复杂,而不是大型),而不是小的系统,因为这样的系统要求建造速度快,系统稳定,他们的业务规则异常的复杂,但他们对系统的性能要求并不是很高(相对电信这样的性能要求)。

转载于:https://www.cnblogs.com/tansm/archive/2006/06/07/419927.html


http://www.niftyadmin.cn/n/3337993.html

相关文章

电子不停车收费系统(ETC)专题(2)——国内现状

我国从90年代中后期引入该系统,并形成了第一次试点建设热潮。当时在江苏、广东、北京、福建等地有小规模试点应用,但是总体应用效果不好,大部分系统没能开通或成功运营。这一阶段的ETC系统建设多是以技术为驱动,盲目求新是很大的驱…

Foxmail 6.0 Beta4

Foxmail是优秀的国产电子邮件客户端软件。新的Foxmail具备强大的反垃圾邮件功能。数字签名和加密功能在Foxmail 新版中得到支持,可以确保电子邮件的真实性和保密性。 通过安全套接层(SSL)协议收发邮件使得在邮件接收和发送过程中,传输的数据都经过严格的…

电子不停车收费系统(ETC)专题(3)——技术探讨(1)

ETC系统作为未来智能交通发展的主要趋势之一,可以极大地促进我国公路交通收费的发展并且还能大大改善我国公路交通状况。然而由于ETC系统的建设投资巨大,区域联网收费情况错综复杂,造成我国ETC的发展并不顺利。本文提出采用只读RFID车辆识别技…

linux 用户打开进程数和文件数调整

1 查看nproc(max user processes)命令 [rootvm-cdh4 ~]# ulimit -u 14866 2 修改nproc 临时修改, 重登录或重启后失效: [rootvm-cdh4 ~]# ulimit -u 32768[rootvm-cdh4 ~]# ulimit -u 32768 尝试在 /etc/security/limits.conf 中加入下面的配置: * soft nproc 32768 …

电子不停车收费系统(ETC)专题(4)——技术探讨(2)

电子停车不收费系统,顾名思义就知道该系统一定与电子电路密切相关,ETC采用了大里集成电路的设备,端口防御雷电等脉冲电压、电流的能力下降,出现雷雨等高压脉冲损坏设备端口,故障率提高。本文主要介绍ETC收费车道的防雷…

H3 BPM让天下没有难用的流程之功能介绍

H3 BPM功能地图如下: 图:H3 BPM 功能地图 一、流程引擎 H3 BPM 流程引擎遵循WFMC 标准的工作流引擎技术,设计可运行的流程和表单,实现工作任务在人与人、人与系统、系统与系统之间自动流转执行。 图:H3 流程设计器 H3…

电子不停车收费系统(ETC)专题(5)——最新动态

第十四届智能交通世界大会于2007年10月9—13日在北京召开,大会主题是“智能交通—创造美好生活”。在展会上,从各个论坛到各个展台,新技术、新应用层出不穷,其中高速公路联网收费系统、不停车收费技术、位置信息服务特别是导航服务…

利用ASP.NET2.0向导控件一步步建立与用户的交互--------提高和自定义用户体验

本文是利用ASP.NET2.0向导控件一步步建立与用户的交互--------基本概念的后续文章,介绍了Wizard控件的高级使用以提高用户使用体验。单击下面链接进行查看http://www.cnmaster.net/news/show.aspx?id9&cid5 转载于:https://www.cnblogs.com/mqingqing123/archi…