选择显示字体大小

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来开发项目。

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


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons