JDO能给我们带来什么

原创 2003年07月04日 09:21:00
JDO能给我们带来什么 - 成本,管理,快速开发,随需应变……

(本文的版权属作者本人,欢迎转载,但必须注明出处和原作者)

JDO规范的出台,给了传统的数据库应用,尤其是WEB方式的数据库应用一个新的机会,就是采用透明的中间件存储技术,减少传统开发的繁琐工作,提高开发和维护的效率,使我们能够应对新的互联网时代的日益迅速的需求变化。
从开发的角度来看,我们进行J2EE标准的Web应用开发时,如果涉及到数据库,一般具有一定经验的开发团队都不会采用JSP+JDBC的方式直接进行数据库操作,那样做一方面工程浩大,代码冗长,另一方面不易维护,危险性更大。一个简单的类似下面的语句:
resultSet = preparedStatement.execute();
...
preparedStatement = connection.prepareStatement(...);
看上去没什么问题,但运行过程中会渐渐导致服务器死机,因为第二条语句前面少了一句 preparedStatement.close(),这样导致一些非JVM分配的内存永远无法回收(因为不归Java的垃圾回收机制管)。这种问题就对不是非常精通JDBC的程序员来说,是非常容易犯的,最重要的是,发生这种问题后,要查出其中的问题来,在代码量较大的情况下,你会发现这比联合国在伊拉克的核查工作复杂得多。
因此,有经验的开发团队会采用一些JavaBean来包装数据对象,这也是面向对象开发方式的需要。然而,就算是这种采用ValueObject来包装数据库数据的方式,依然存在以上的风险。
这只是问题的一方面,在应用开发需求越来越多的情况下,传统的开发方式的效率和可维护性已经跟不上需要。很多公司对此只有两种解决方案:一是扩充招人,但这样涉及到开发水平和培训方面的成本问题;二是推迟或取消一些相对次要的开发任务,不过这样只会拖慢企业的发展。
就是在这样的情况下,在国际上一些在这方面比较有经验的企业(如Sun,IBM等)才联合起来制定了JDO规范,以求让开发人员摆脱这方面的风险,从复杂而繁琐并且重复性很大的工作中解脱出来,以全新的完全面向对象的概念和业务意识来指导开发。JDO规范相对EJB来说,实现简单而性能出众,可大大节约公司的开发成本,因此得到很多公司的拥戴,尽管JDO1.0规范才公布不到一年,实现JDO规范的产品却如雨后春笋一般冒出来,比如美国(Kodo, FrontierSuite, FastObjects, etc.)、法国(Libelis LiDO)、南非(JDOGenie)、德国(JRelay)等厂商都有比较不错的产品(从中我们可以看出Java是一个比较开放、比较国际化的东西),另外,除了这些商业产品之外,还有一些见义勇为的壮士组成一些团队提供免费产品(Implementation),比如TJDO,Xorm,OJB等等。

下面我们就来看看JDO到底能给我们带来什么。

1、节约开发成本和时间。

使用JDO,据对目前采用JDO的一些公司的统计,在开发中大概节约30%代码量,在维护中大概节约60%的工作。尽管这些数据来自JDO产品提供商,但从用户的角度来看,我认为这个数字并不过分。因为传统的开发方式代码量很大,导致开发人员多,开发时间长,人一多,相互的协调和沟通难度就大,开发时间长,开发人员的记忆力有限,前后代码的连贯性一致性也会受到影响。而采用JDO后,开发人员需要写的代码,主要是对数据层的包装部分,将大大减少,应用中的代码将主要集中在业务逻辑的处理上。俗话说,做得多,错得多,做得少,错得少。虽然有点消极,但也说明这个事实。当我们的手工代码变少后,出错的机率就会小很多,就算出错,也很容易查出来。当这些目标达到后,对JDO的一次性投入(比如购买JDO产品及相关培训),比起传统的开发开销来,就会显得微不足道。人力成本方面更是,原来三个人的工作,现在可以两个人做(因为工作量减少了),这就节省了一个人力的成本。

2、提高应用性能,尤其是Web应用。

JDO厂商们都在利用多年的经验对底层数据库操作进行了大量的优化,而这些优化,一般的程序员由于经验和复杂性,都比较难做到,比如分布式缓冲、JDBC2.0和JDBC3.0中的一些面向性能优化的高级处理等等。因此,我们使用JDO产品的话,就可以利用这些由厂商提供的优化来提高服务器的性能。一般的厂商都会提供很多性能调节的参数,以针对不同的具体情况。

3、更灵活的业务逻辑。

由于JDO解放了开发人员在数据底层的工作,他们可以集中精力考虑业务逻辑方面的事务,与需求方也更容易沟通,不会象原先一样,凡听到一个新的需求或变更时心里首先想到的是要加多少数据表,外键如何关联,越想越复杂,最终拒绝需求。采用JDO后,开发人员可以更快地实现业务逻辑,即使是做试验,也更加方便快捷,比如想对需求方提出两种不同的实现方案供效果比较,做起示范程序来就能迅速完成,而传统方式中能在同样的时间内完成一种就已经很不错了。当开发人员可以与需求方更好地沟通后,能更准确地理解需求,并且往往能提出比较专业的意见以改善业务逻辑,这样,对双方都能有更好的锻炼。

4、有利于开发团队的稳定。

这里所说的稳定并不是说人员都比较固定,而是说开发中的角色比较固定,工作定位比较固定。比如关心性能的人负责映射层,他需要了解所采用的JDO产品的具体实现,以及如何将业务模型有效地映射到数据库上,而关心代码的人不用考虑这些细节,只需要在面向对象的数据模型(一般是一个或复杂或简单的实体类图)的基础上进行业务逻辑的实现。各有各的责任,分工更明确,整体工作效率得到大大提高。也就是说,采用JDO技术后,项目开发中更容易实现任务的纵向划分,不同类型的任务由不同的人做。而传统的方式中,项目一般只能实现横向的分工,一人做一块,每一块都是从界面到JavaBean再到数据库全包,如果纵向划分的话,因为任务之间难以确定接口规范,导致大家互相抱怨,从情绪上已经影响了开发的进展,这就是为什么很多项目一开始都设想得很好,而具体做的时候会互相牵连,导致“无工不拖”的局面。JDO技术,由于是一种比较实际可行的规范,便项目管理者能更好地分配工作任务,相互之间更容易“划清界限”。这样的方式下,项目开发就不易受人员流动的影响,因为:第一,如果走掉一名开发人员,只要补充一个人,或者将其工作分配到另一人身上,让他明确责任,对其它开发人员的影响并不大,不象以前“走一人瘫一块”;第二,如果工作量大了,需要新加入开发人员,对其的进入工作状态的培训比以前简单,因为越来越多的人会熟悉并精通JDO规范,就象会Java一样,有了这个基础,只要了解一下业务逻辑就可以进行开发了,这也是规范化的好处。就象很多外资企业一样,大家都是螺丝钉,人员流动性虽然大,但公司的发展却很稳定。

5、提供更多的个人发展机会。

对开发人员来说,长年累月一成不变而又低效的工作方式是最大的杀手,是在扼杀自己的生命。采用JDO技术后,他们会看到原来开发可以如此容易,原来还有更多的业务逻辑方面的东西值得自己关注和投入精力。开发人员的思维会从底层的代码转移到高级的业务处理上来,因为自己的开发方式已经有规范化的质的提升。我估计,以后会出现JDO认证之类的概念,在万一的情况下的求职将会更加容易。毕竟一种规范带来的东西往往是多方面的改善。当开发人员更多地思考业务方面的问题后,对需求方的业务流程往往会有更规范的意见,从而引起双方的良性循环。以住的开发人员,常常会想为什么很多大公司的老板都不是做开发而是做业务的,以后自己的出路在哪里。其实,开发人员完全可以在开发过程中了解业务方面的内容,对自己以后的发展也有好处,并且,思维将会更加严谨,原则性更强。

以上只是JDO所能带来的比较明显的几个好处,实际上还有更多的好处等待我们在使用中去发掘,去研究。在以后的文章中,我会从具体的开发过程入手,描述如何使用JDO来开发项目。

本文的版权属于笔者本人,但欢迎转载,前提是注明出处和原作者。另外,欢迎在我的专栏中查看我的另几篇文章,并提出宝贵意见!

AOP能给我们带来什么

转载自: http://blog.csdn.net/ljianl/archive/2007/01/18/1486337.aspx 面向过程编程离我们已经有些遥远,面向对象编程正主宰着软件世界。当每个新...
  • wangwei9966
  • wangwei9966
  • 2009年03月17日 16:45
  • 199

信息化能给我们带来什么?

所有人都好像对信息化有认识,但又有多少人能够回答清楚这个问题。但这个确实是一个问题。这周给总裁办的几位正负总裁一个小调研。回收了5张问卷。包括老牛晓平都没有回复。所以信息化至少就应该解决这个沟通障碍的...
  • xiammy
  • xiammy
  • 2009年07月06日 00:37
  • 1455

SOA能给我们带来什么

  SOA是面向服务的架构,没有人不同意。但对于SOA究竟是什么,每个厂商都有自己的定义和解释。有人说是一种架构,有人说是一种方法论,却没有几个人能给出一个大家都信服且简单易懂的解释。SOA将应用程序...
  • shin_zhong
  • shin_zhong
  • 2009年09月18日 22:59
  • 287

JDO能给我们带来什么-成本,管理,快速开发,随需应变……

  • zgqtxwd
  • zgqtxwd
  • 2008年05月01日 06:37
  • 225

SEO能给我们带来什么?

SEO对于我了解就是:发发文章,发发外链,这也是我刚刚接触seo的知识,当时就是不知道是什么来的,就是知道主管安排的任务就要完成,每天都叫我们更新文章。到时就知道要完成任务就行了,对于seo最基础的了...
  • u013024007
  • u013024007
  • 2013年12月02日 20:42
  • 422

通过企业IT架构规划(EA),能给企业IT管理带来什么?

描述: 图1:IT总体架构使企业获得最佳信息化投资回报图片: 描述: 图2:IT总体架构为企业IT管理本身带来的价值图片: 随着信息化建设的深入,IT总体架构将会成为中国信息化建设中第一位的战略问...
  • xibusj
  • xibusj
  • 2007年03月15日 11:22
  • 370

从接口、抽象类到工厂模式再到JVM来总结一些问题

原文地址:点击打开链接 俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 涉及到的知识点总结如下: 为什么使用接口?接口和抽象类的区别简单工厂模式总结Java中new和new...
  • zs492761271
  • zs492761271
  • 2016年12月19日 10:13
  • 858

消息中间件(MQ)能给我们带来什么

消息中间件(MQ)能给我们带来什么 http://www.jblog.top/article/details/254951
  • qq1013598664
  • qq1013598664
  • 2017年08月16日 23:22
  • 172

大学课程能给我们带来什么?

外在的环境我们无法改变,我们唯一能做的,就是改变我们自己,以便能够在我们人生最美好的时光,尽可能多地从大学现有的资源中汲取营养。现在,就让我们来分析一下大学里开设的课程,究竟对我们有什么意义(由于笔者...
  • Bluechalk
  • Bluechalk
  • 2015年02月25日 20:33
  • 599

LISP到底能给我们带来什么

最近在关注LISP可不知道LISP到底有哪些版本LISP应用成功的案例请求高手帮忙 ...
  • zhuping1980
  • zhuping1980
  • 2007年11月02日 15:01
  • 158
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDO能给我们带来什么
举报原因:
原因补充:

(最多只允许输入30个字)