高手谈orm之硬伤

高手谈orm之硬伤

ID:28701615

大小:39.50 KB

页数:7页

时间:2018-12-13

高手谈orm之硬伤_第1页
高手谈orm之硬伤_第2页
高手谈orm之硬伤_第3页
高手谈orm之硬伤_第4页
高手谈orm之硬伤_第5页
资源描述:

《高手谈orm之硬伤》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实用标准文案高手谈ORM之硬伤前言我是Oracle,SqlServer认证得DBA,也曾在Oracle,sqlserver中写过100,000行以上的存储过程,但现在已经彻底的转换到ORM上了,现在已经用ORM成功开发了10个系统.ORM的好处是抛弃了传统的面向过程的方法,远离了数据库和SQL.使开发更多的使面向业务领域.用Orm的系统,如果配备适当的辅助工具,比如代码生成,会有极高的开发效率.用ORM实现的系统,会有极强的可维护性,可以非常快的满足用户需要的变更,这点实际上对开发来说,是绝对重要的.ORM带来的问题是大约有20%的性

2、能损失,其实性能的问题更多低是算法,框架和领域设计的问题.没必要从太底层方面去考虑.还有就是ORM初期需要写的代码比常规要多很多.而这些代码不一定马上就要用,或可以更简单的写.有些同志总是哪代码行数来说话,认为用代码量少实现的系统就是优秀的系统.实际上软件开发的质量评价标准从来就没有代码行这个指标.关于代码量的问题,ORM必须配备辅助代码生成工具,不然就是一个硬伤.ORM不能实现复杂的业务逻辑.我看这个问题不成立.比如Web开发时,需要一些复杂的网格来表示数据,我看见很多人就用输出htmltable来实现.我用封装后的DataGrid

3、一样的实现了,并且用更快的速度实现了.其实问题的关键是他们没有很好的掌握DataGrid的用法,就只能用比较原始的办法了.我用纯ORM成功的实现了一个物流管理平台.其中这个平台有管理机构,很多的货主,很多的客户,很多的运输机构,很多的库存,设计很多的运输方式,货物运输的合并,分坼.业务相当的复杂.除View外,没有任何的存储过程.ORM之硬伤园子里有些人,他们真以为自己明白了面向对象,然后装着满腹经纶,侃侃而谈,一篇接一篇,不厌其烦地喊着ORM如何如何。你以为他真的明白“面向对象”么?其实,他对面向对象的理解仅限于教科书中的封装、继承

4、和多态,或者再知道一点面向对象的若干原则但其实并不真正理解。精彩文档实用标准文案笔者愚钝,入行多年尚不懂面向对象,只懂得用其形而不懂用其实。五年后的某一天终于开窍,明白了面向对象之实,也仅仅是一个开始而已。当又经历了另一个五年的倦怠,发现并理解了设计模式、面向方面等技术作为面向对象的必要补充后,才算是彻悟!所以当我见过一个同学,尚未出校门已然彻悟,真是羞愧!有一天面试的时候,我问一位同学,Framework和Library的区别是什么?他答不上来。而另一个同学略一思考就告诉我,你的程序会调用Library,而Framework会调用你

5、的程序。虽然精辟,但我还是要补充:Framework通常也会提供一个Library,所以,Library是水平的,而Framework是垂直的,此处的“水平”和“垂直”是相对应用系统的层次设计而言的。如果没有层次,其实Framework其实就是Library。Microsoft的EnterpriseLibrary当然就是一个Library,无法代替Framework。如果让那位已经彻悟的同学舍弃ORM来实现复杂的业务功能,他当然无法接受。相反,如果让一位抱着《ThinkinginJava》似懂非懂的同学用ORM来实现同样的功能,他也一

6、样无法接受。其中的一些同学非常擅于“鸡蛋里挑骨头”,于是园子里有了这样一堆垃圾文章或者垃圾跟贴。另外一些同学不精于这样的能力,所以仍在徬徨之中。此乃ORM惟一之硬伤也!如果你不理解面向对象思想,就先试着去理解,然后再来讨论ORM这个话题,并发表你的高见。再说性能精彩文档实用标准文案ORM提供了所有SQL语句的生成,代码人员远离了数据库概念。从一个概念需求(例如一个HQL)映射为一个SQL语句,并不需要什么代价,连1%的性能损失都没有。真正的性能损失在映射过程中,更具体地讲,是在对象实例化的过程中。我曾经做过一个试验,以“计算第N个素数

7、”这样的命题。我采用Delphi写NativeWin32Console程序,又采用C#写CLRConsole程序。两者相比,令我大失所望。N结果耗时DelphiC#100079270ms2ms1000010474316ms17ms1000001299721438ms324ms10000001548586711437ms7823ms精彩文档实用标准文案该命题采用的算法是找出第N个素数以前的所有素数,开辟一个内存区存贮这些素数。在Delphi中我用链表,在C#中我用List。实际的结论是:当列表足够大时,链表的性能远不及List

8、。当然,如果每个链表节点只装一个元素,这种差异会更明显。事实上,我测试过每个链表节点所装的元素个数做了一个阶梯试验,从30个、254个、510个、1022个到2046个,每个节点所装载的元素数越多,耗时越短,最

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。