`
lgx522
  • 浏览: 124327 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

OO和SQL,应该携手共进

    博客分类:
  • Ruby
阅读更多
最近两年来,经常在OO和SQL这两兄弟阵营里转来转去,总想做出个“决断”,结果却是谁也舍不得,手心手背都是肉啊。

十年前学应用开发的时候,SQL是绝对的王者,一直也就用了好几年,搞定了不少事情。有时候也觉着烦,尤其是许多不相干的调用代码,罗罗嗦嗦粘贴个没完。这时候总是想,能不能轻松点啊。

这时,以Hibernate为代表的ORM流行起来了,笔者也就兴冲冲地投入到实践当中。四五年前已经可以很舒服地配合Spring的Hibernate Template写代码了,那是相当地省事啊。虽然Hibernate也不是盏省油的灯,费了不少学习和调试的时间(老实说笔者到现在也算不上精通),好在以OO方式写应用,逻辑代码清晰多了,结构化进一步提高,也算值了。这时候又在想,还能不能更轻松点啊。

而这时,RoR火了起来。笔者在一年半前一接触,立马就迷上了Active Record,以前多少烦恼似乎瞬间烟销云散了,实在是非常的爽快!这个阶段,笔者已经彻底成为OO的迷信者,言必OO,并且深信以AR为代表的DSL是企业应用的最佳解决方案。

整好这时碰到一些传统C/S转B/S的企业应用项目,笔者满以为可以轻松搞定,结果却是出人意料,竟然被这些项目当头打了一棒。由于传统企业应用是以写为主的OLTP,并混合了部分查询相当复杂的OLAP,性能要求还是比较高的,ORM很快就败下阵来。很多时候甚至逼迫笔者重拾SQL,这时候两难的境地出现了:一边是清晰的OO,一边是高效的SQL;普通CRUD是OO的强项,而复杂的查询统计则又是SQL的天赋。笔者于是无奈地在这两个阵营里转来转去,一面到各个技术站点寻求“真理”。可惜这年头,以SQL为代表的传统阵营和以OO为代表的新生阵营有些“水火不相容”的味道,正是“人也多嘴也多讲不清道理”。寻求得越多,也就疑惑得越多。自己也参与并发起过一些争论,结果愈发云山雾水。

工作生活疲累之余,信手翻翻十多年前一度热衷的儒释道经典,这才猛然间有了“不识庐山真面目,只缘身在此身中”的觉悟。答案其实已经在笔者实践的“无奈”当中。由此可见古人“兼容并包”的睿智。
正所谓OO和SQL,本是同根生,相煎何太急。与其争论谁比谁更高更强,不如共同携手解决现实问题。

在此原则下,笔者对项目中SQL不爽的部分改用OO,OO不适合的地方沿用SQL,终于达到了很好的平衡。
于是,曾经深信而后怀疑否定的的AR,携手SQL老大哥,相当痛快地解决了大部分企业应用问题。
对立并非正途,合作才是王道,这个道理在代码领域同样成立。
2
0
分享到:
评论
2 楼 spiritfrog 2008-07-03  
世界本来就是一个平衡体, 分析问题也要如此心态
1 楼 hatedance 2008-07-03  
本来就是如此,各有所长嘛!

相关推荐

Global site tag (gtag.js) - Google Analytics