中国开发网: 论坛: 程序员情感CBD: 贴子 592428
李战
ORM是为迷恋内存对象的人们编写的神话故事
因为对象是如此的美丽动人的容颜,人们已早已被她迷住。早已忘记了数据集、表、记录和字段,眼里只能容下对象列表、类,对象和属性,其他的是沙子。唉,从来只有新人笑,有谁听到旧人哭?

于是,ORM实现了持久化,可以把一个个对象写到数据库里了。尽管以前是用数据集和记录。
于是,ORM实现了查询语句,可以把数据库查出来变成内存对象了。尽管以前是用SQL返回数据集。
于是,ORM实现了同个对象属读写制来读写数据,还可以有事务保护。尽管以前是用记录的字段。
于是,ORM实现了在内存对象里实现业务逻辑。尽管以前是在内存数据集中实现,也有封装在存储过程里的。

那又有什么不同呢?

他们说,当然不同了,现在都是对象了,对象,知道不?OO,知道不?这是最先进的软件思想!

于是,成百上千的订单记录变成了成败上千的订单对象,成千上万的股票交易记录变成了成千上万的股票交易对象。什么?内存不够?加内存啊!还不行?搞群集啊!

于是,计算银行所有客户的利息,一个个对象的的加啊减啊。什么?效率底?多核啊,现在都流行4核了,将来一万个核的CPU都跟白菜一样价啊。

什么?批处理?并发?索引?查询优化?执行计划?分区表?唉,唉,唉...

数据库,就是存数据的仓库,为啥数据库就却能轻松处理这些基本的数据处理要求?

去问问原来的她吧。

这才发现,原来的她已经修成正果,数据表变成了数据类,字段变成属性,SQL变成了OQL。批处理、并发、索引、查询优化、执行计划、分区类都还是保持原来的效率。

编写存储过程和函数等变成编写类方法,但也许与你以前的编写方法的思路不同的是,这个方法可以针对一批对象,而不仅仅是一个对象。this或self 是多个数据对象,而不是一个。

这就是“对象数据库”,这才是你原来的温柔乡。

但她返回给应用程序的依然是结果集、记录和字段,还是以前的容颜。当然,你也可以给她装扮上内存对象的面具,让她看起来是一个个对象,或许这可以称做O/O Mapping。不过,这里是数据库里的“O”和内存“O”的映射,两个“O”的概念处于不同的层。

好像,“层”一字并不能表达这里的概念,或许用佛所说的“界”才能表达,或许你需要跳出三界才能理解“对象”一词的真正内涵,或许根本就没有对象...

午觉醒来,草草写就。

李战(leadzen).深圳 2007-12-26
李战(leadzen)

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录