一些感想,欢迎拍砖

不可能无视数据库,即使使用了再高明的ORM技巧。
以下数据库特指关系型数据库,对象为面向对象的简写。

原因:
1, 数据库比对象技术更成熟。
      数据库实现的背后有关系运算的理论基础,而面向对象技术最多只能算实践中摸索出来的比较有效的手段。

2, 数据库有标准(SQL 9x, 03...第二范式,第三范式...)可参考,对象没有。
      不考虑性能的话,几乎每个DBA做出的选择都完全一样;不考虑性能的话,面向对象的人为了把系统划成100层还是99.5层争执不休。

3, 对象需要数据库,数据库不需要对象。
      数据库无关紧要吗?那你为什么非要把对象拆碎了存到数据库里,不把它们直接放到XML文档里呢?

4, 数据库的思维是针对集合操作,对象的思维是针对个体操作。
      也许泛型算法能弥补这个鸿沟,不过那也是C++里STL的事,和对象似乎关系不大。

5, 数据库的功能远不止存取数据,对象不能因为无法方便地应用这些功能而让它们走开,这时候该走开的是对象本身。
      想一想C# 3.0里为什么会有一个DLinq吧,它很面向对象么?

6, 只设计对象,数据库结构自动生成是不负责任的做法。
      且不提性能,只问你程序重构了,原来的数据怎么办?

7, ORM里最重要的不是R,也不是O,而是M。
      正因为一时半会儿O和R谁也取代不了谁,所以才需要M。好像Stan Lippman介绍 C++/CLI 时说最重要的反而是大家最不容易注意到的:那个斜杠才是整个术语的重点。

8, 理想总是美好的,现实总是残酷的。
      性能是每个程序员的最大敌人。

posted on 2007-04-21 02:42  deerchao  阅读(2463)  评论(24编辑  收藏  举报