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

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  
本来就是如此,各有所长嘛!

相关推荐

    OO4O简介以及其在VC++中的应用

    本文将详细介绍OO4O的特点和组成部分,并通过具体示例展示如何在VC++ 6.0环境中使用OO4O进行数据库操作,包括执行SQL语句的过程。 #### 开发Oracle数据库应用的选择 在开发基于Oracle数据库的应用时,开发者可以...

    OOALV常用功能完整简例

    标题中提及的“OOALV常用功能完整简例”,描述中说明了该简例包含的内容:热键单击、双击、帮助、编辑和自定义工具条等。OOALV是指面向对象的ALV,它是在SAP系统中常用的报表输出组件,用于将数据以表格形式展示。在...

    基于OO4O和VC 6.0 实现Oracle数据库操作C++源代码程序小实例

    在本实例中,我们将深入探讨如何使用Object Oriented for Oracle (OO4O)库和Microsoft Visual C++ 6.0(或Visual Studio .NET)来实现对Oracle数据库的C++编程操作。OO4O库是Oracle公司提供的一个接口,允许开发者...

    mssql sqlserver 使用sql脚本实现相邻两条数据相减.docx

    MSSQL SQL Server 是一种关系型数据库管理系统,广泛应用于各种行业和领域。有时,我们需要对数据库中的数据进行操作,例如计算相邻两条数据的差异。在本文中,我们将讨论如何使用 SQL 脚本在 MSSQL SQL Server 中...

    oracle_sdk(OO4O)

    OO4O接口提供了对Oracle数据库的全面访问,包括但不限于创建和执行SQL语句、事务管理、游标处理、存储过程调用等。OO4O基于OLE DB,它是微软为数据库访问提供的一种标准接口,支持多种数据库供应商,包括Oracle。 *...

    ABAP OOALV学习文档

    **ABAP OOALV**(Object-Oriented Application List Viewer)是一种用于SAP系统的高级列表显示技术,主要用于生成复杂的报表和列表视图。自R/3 4.6C版本起,其名称由“ABAP ListViewer”更改为“SAP ListViewer”。...

    用OO4O和VC++开发ORACLE数据库应用程序的方法研究

    ### 用OO4O和VC++开发ORACLE数据库应用程序的方法研究 #### 1. OO4O组件概述 OO4O(Object for Oracle)组件是一种专为简化Oracle数据库操作设计的进程内自动化服务器。该组件的主要目标是提高开发效率,简化与...

    VC++中利用OO4O接口从Oracle数据库中读写图像C++源代码程序小实例

    在本实例中,我们将深入探讨如何在VC++环境中利用Object-Oriented ODBC(OO4O)接口与Oracle数据库进行交互,特别是在读取和写入图像数据方面。Visual Studio .NET是一个强大的开发平台,它提供了丰富的工具和支持,...

    [SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV)

    [SAP ABAP开发技术总结]ALV详解(Fuction ALV 和OO ALV) 图文并茂,详细介绍了Fuction ALV 和OO ALV的相关开发 [SAP ABAP开发技术总结]ALV详解:Function ALV(一) [SAP ABAP开发技术总结]ALV详解:Function ALV...

    【ASP.NET编程知识】ASP.NET过滤类SqlFilter,防止SQL注入 .docx

    在这个方法中,定义了一个字符串变量fileter_sql,包含了需要过滤的SQL关键字和特殊字符。然后,检查当前HTTP请求(不论是POST还是GET)中的每个参数,并对每个参数值进行正则表达式替换,将危险的SQL关键字和特殊...

    SAP ABAP开发学习——第10课:OOALV(视频教程)

    以下是关于SAP ABAP和OOALV的一些关键知识点: 1. **SAP ABAP概述**:SAP ABAP(Advanced Business Application Programming)是SAP公司的主要编程语言,用于开发和自定义SAP R/3和SAP NetWeaver系统。它提供了各种...

    实战OO 用例 建模

    实战OO_用例建模 实战OO_用例建模 实战OO_用例建模

    ABAP OO的八个理由

    1. 数据封装与稳定性:ABAP面向对象(OO)编程的核心优势之一是数据封装,它将数据和操作数据的方法捆绑在一起,形成对象。这提高了程序的可维护性和稳定性,因为对象内部状态的改变对外部是隐藏的,减少了不必要的...

    用OO的思路封装MYSQL数据库操作

    例如,`SqlCommand`类可以自动根据提供的条件和操作类型(如SELECT、INSERT、UPDATE或DELETE)生成相应的SQL语句。 在压缩包中的`lyMySql`文件可能是实现这些概念的一个示例库或者源代码。如果有机会查看这个文件,...

    ABAP OOALV报表开发

    ABAP OOALV报表开发,定义变量,选择屏幕定义,创建类,调用函数

    实战OO的pdf自留备份

    《实战OO》是一本深入探讨面向对象(Object-Oriented, OO)编程技术的书籍,主要针对软件开发人员,特别是那些关注于软件设计流程和优化的开发者。此书的PDF版本是作者或读者为了个人学习和参考而留存的备份,包含了...

    SAP OO ALV技术介绍.pdf

    SAP OO ALV技术介绍 ...但是,OO ALV技术的实现也需要一定的技术基础和经验,需要熟悉SAP系统和ABAP编程语言。 OO ALV技术是SAP系统中的一种强大且灵活的报表控件类,可以满足大多数ALV需求,具有广泛的应用前景。

    简单数据库服务器调试(源码)

    一个简单的数据库服务器调试工具,还没写完的 现在支持SQL和Oracle两类,SQL只用到一种连接方式,而Oracle用到了ADO和OO4O(部分功能尚未完成), 支持SQL语句执行(支持SQL Server和Oracle语法,并支持关键字高亮)...

    面向对象需求分析(OO RES)

    在需求定义阶段,OO RES 使用业务流程图和数据流程图来描述系统的业务流程和数据流程。业务流程图用于描述系统的业务流程,数据流程图用于描述系统的数据流程。 在系统设计阶段,OO RES 使用对象模型来描述系统的...

    oo2core_6_win64

     1、Windows 95/98/Me系统,将oo2core_6_win64.dll复制到C:\Windows\System目录下。  2、Windows NT/2000系统,将oo2core_6_win64.dll复制到C:\WINNT\System32目录下。 3、Windows XP/WIN7/win10系统(64位系统对应...

Global site tag (gtag.js) - Google Analytics