谈谈为什么ORMapping不适合企业应用的构建,以及未来企业应用系统构建需要什么要素

说明:本人文字功底欠佳,有问题欢迎继续深入探讨,本文允许转载,但请注明出处,谢谢

 

本人向来不喜欢ORmapping技术,并且在所管理的项目中,极少使用ORMapping技术或框架,iBatis算是一半特例吧,因为iBatis不算是个完全的ORmapping框架,至少本人管理的项目中,ibatis从来都只算是数据库快速开发的一个工具罢了,有人可能钻牛角尖,说我根本不懂ORmapping,因为根本我就是在用ORmapping嘛,这里我不就此问题进行争论,何况ibatis也在逐步退出本人的可用技术列表。

 

先说几点ORMapping本质上的缺陷吧

  1. OO based:这个缺陷其实起源于面向对象技术和java,毕竟,没人有object或java的话,也就无从谈起Ormapping。本人一向觉得OO技术用于“业务”建模有着很大的缺陷:
    1. 从系统运行生命周期看,Class/Object结构不可变,意味着如果要应付业务灵活性,可变性,必须从代码级别进行更改,对系统的开发过程带来不小的麻烦(打包部署等),当然有些方案会采用灵活的数据结构(如hashmap等)或结合动态语言,这里我也钻一下牛角尖,您这样做又符合OO了么?
    2. Class/Object属于数据结构在单一系统内的表示,不适合业务数据结构的更高层抽象表示,我的意思是在跨平台、跨语言操作,没有带来一致性的访问方法。只能是单一系统内的具体实现形式。可以预见,未来Internet based应用大发展的情况下,应用系统间进行集成的需求越来越旺盛,使用OO于business建模,不会带来任何好处。我们需要一种比object更为抽象的、跨语言的数据结构,如xml、JSON等表示方法,来描述business(业务) model。
  2. Persist层透明:这一点向来是ORmapping支持者拿来说事的,我这里仅从反面提一点意见,这种透明性对产品移植的确很有好处,但透明也同样意味着底层处理不可知,而且对项目实施来讲,我不相信开发人员不需要了解数据库设计,相反,清楚的了解数据库的设计,从来都是开发人员必须掌握的,所以我一直认为这个转换属于画蛇添足,反倒使系统变得复杂。
  3. 复杂性:ORmapping框架从技术细节上,需要衔接两个层面上转换,对象语言到关系语言的转换,额外增加了对开发人员知识集的要求,而且,如果需要进行调优,还需要比较深的掌握所使用的框架实现细节,不可控因素较多,风险较高。
  4. “不开放”:这里所说的不开放,是在应用系统集成层面上讲。ORMapping的使用,是在目前开放标准(跨平台)的业务描述下,通过转换成OO对象的方法,再persist到关系数据库中,这个转换过程,是在两种不一致的知识集下进行的,比如从xml转换成java object,这就需要developer既要了解xml解析,又需要java skill,缺一不可,过多技术的引入,势必阻碍开发效率及质量。

解决方案

互联网时代要求高效编程,面向业务,面向集成,这就意味着编程模型的变更。星星已经不是那个星星,应用系统已经不是那个解决“单一”问题的系统。

 

互联互通是现代或未来应用系统必备的基本要素。跨编程语言,跨编程平台的统一编程模型同样重要,个人认为,现代web service、xml应用已经使应用系统间接口变得十分容易,但这种统一的数据结构(或称模型)目前仅大量应用于接口,还未深入到语言层面,未来的语言,或是应用系统框架,必将统一到相同(或极为相似)的编程数据结构及对数据结构的统一访问方法。比如xml+xpath,但目前xml+xpath的性能还需进一步提升,才可加速这种转型。

 

再论API

简单点讲了,拿jdbc说事,目前java领域关系数据库的访问都是基于jdbc,个人认为jdbc还是数据数据库原生API,受限于特定的语言,编程模型和规范,属于比较底的技术层面规范,通常的方法还是直接用JDBC或ORMapping工具等进行语言层面的转换与关系数据库对接,远不能适应于直接于业务模型进行直观映射。

 

而从本人前述观点,未来的统一编程结构(至少是面向企业应用的)应该是开放的、适用于所有系统的,而从抽象层面看,关系数据库作为一种persist资源(或系统),应该也是工作于一种抽象的、统一的数据结构接口上(或者叫API,可以是基于jdbc封装的,也可能是未来替代jdbc的一种api),因此,类似JDBC或其他系统的特有访问协议,必将进一步抽象,被更加开放的数据结构或模型所替代,而目前,对于特定类别资源(如关系数据库),还找不到统一的基于开放(xml)协议的统一标准,但这并不妨碍客户化的自定义接口。

 

说了半天,不知道说明白了没,简单讲,一句话,对于特定资源(如关系数据库),应该通过特定的资源适配器(adapter),以一种类似于web servcie的接口,对关系数据库进行增删改查等业务操作。其他的应用系统,也是如此道理。

 

还需要点什么

聪明的您一定想到了,剩下只需要一种技术了,就是xml转换。

 

好了,点到为止!希望您设计的系统也能一切从简,实现绿色IT。

 

 

你可能感兴趣的:(谈谈为什么ORMapping不适合企业应用的构建,以及未来企业应用系统构建需要什么要素)