<b>闲谈Java数据库存取技术</b>[Java编程]
本文“<b>闲谈Java数据库存取技术</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
IT技术日新月异,新技术的呈现令人目不暇接,仿佛每一天都在产生着新名词.不过归根结底IT所要实现的代价不外乎数据汇集,然后再以客户但愿的情势展示给客户罢了.因此数据存取技术也就成了一个永久的话题.而在Java这个开放的世界里,数据库存取技术是五花八门,种类繁多.我们也来侃侃Java世界里主流的数据库存取技术.
首先列出豪杰榜
1.JDBC直接拜候数据库
2.EJB entity bean.
3.JDO技术.
4.第三方O/R工具,如目前大红大紫的Hibernate, 别的如Castor, Toplink.
先说说这个历史最为长久的JDBC吧.从Java诞生的那天起,这位仁兄就开始登上历史舞台了.Java能有本日这么风光,JDBC可以说是功不可末.一路走来,目前已是JDBC3.0了.在没有JDBC的时刻,拜候数据库那是八仙过海,各显神通,各家数据库厂商都有自己的一套API, 苦就苦了开辟人员了.换了个数据库,那个程序要改是面目全非.
JDBC标准的出台,向世界宣布此后有了拜候关系数据库的尺度通用接口了.JDBC尺度得到了几近全部数据库厂商的支持,仿佛还真难找到这么一个数据库,它是没有JDBC支持的.JDBC标准一经公布,得到了空前成功,很快成为java拜候数据库的尺度.JDBC的成功在于它的标准统一尺度的接口,只需求掌握尺度的SQL语言便可以拜候各种差别的数据库了.这种数据库间的可移植性和Java一向高喊的口号Compile Once, Run everywhere遥相呼应.JDBC本日还是java拜候数据库的基石,CMP、JDO、Hibernate说到底只是更好的封装了JDBC, 供应了更为上层的更为强盛的接口罢了.然后说说JDBC直接拜候数据库的方法来实现java 长期性.
这种方法相关于CMP来说对比简单直接,分外是关于小型利用非常便利.比方,我要写一个简单的留言版程序,就没有必要session bean ,entity bean ,又是home接口又是远程接口,一层层调了吧.直接JDBC,写SQL语句了事.和别的长期化技术相比,JDBC直接拜候数据库的方法需求程序员操心的事情多了一些,你得自己关心transaction, 自己关心衔接池,你得写大量的get set办法,把SQL select出来的值一个一个塞到你的java object中,大概把java object的值一个一个给取出来,用SQL insert 到数据库,完好手动举行O/R mapping.为了降服这些缺陷,CMP, JDO等等开始连续登上历史舞台.
下面EJB登场,EJB作为Sun J2EE体系的核心部份,是Sun 所力推的企业级开辟的首选,而EJB entity 目前仍旧是Sun J2EE白皮书所最为举荐的java长期化技术.Entity Bean作为EJB标准的一部份,也是EJB标准里面最备受争议的一种技术,它伴随着EJB标准走过了风风雨雨几个春秋.目前EJB3.0标准草案已经出台,http://jcp.org/en/jsr/detail?id=220.
从家庭诞生来看,EJB可谓是根正苗红,标准处于 JCP管理之下,拥有超级豪华的专家构成员, Sun、IBM、Oracle、Borland、Bea、SAP、Jboss、Apache软件基金组织等等.单从这一点来看,选它作为企业级开辟,技术支持应当就无需耽忧了.当然向IBM, Bea等追求项目咨询价钱当然也不菲.从供应功效上来看,EJB entity阅历了EJB1.0,EJB1.1,EJB2.0,功效也越来越完善了.包含了完善的事件支持,EJBQL查询语言,透明的分布式拜候等等.不过作为一个重量级技术,entity bean的性能不太尽人意,这成为它备受争议的一个核心,不知在3.0今后这个情况会不会有所改良.
再有一个,它功效固然强盛,但是关于易用性来说,实在不敢恭维,写一个最简单的bean,也非得home接口,远程接口,要再加上2.0今后加入的本地接口,这么各种各样一大堆,足以让Java初学者望而却步了.但是这一点在一段时间内竟然也成了EJB功效强盛,技术高深的“佐证”.记得多年从前刚毕业那阵,EJB利用在国内还对比少,公司里也没有人研究Why EJB这个问题,反正但凡用EJB的项目就是牛项目,用EJB的人就是牛人,分到EJB项目组的兄弟们走路都是昂首挺胸的,说话都比我等还在JDBC, SQL的人要高两嗓门.EJB 技术目前占据着企业级利用的大部份江山,垂老地位短时间内很难捍动.
下面新生代代表JDO昌大登场,JDO绝对属于超年青选手, JDO1.0也不过是2002四月份才公布.2003五月份出台1.0.1, 目前最新2.0草案已经公布.就为这2.0,江湖上展开的谈论可以说是“血雨腥风”,两大兵团,JDO兵团和EJB兵团争得是不亦乐乎.有爱好的无妨去瞧瞧,里面也不乏重量级人物.单从这一点来看,它能对EJB产生这么大的打击,足以阐明了这个初生牛犊确有过人之处.JDO的诞生给java数据长期性带来很多新特点,分外是它补偿了EJB对OO编程的先天不足,JDO供应了完好的OO支持,担当,多态.JDO和 EJB比属于轻量级工具,无需容器支持.不像EJB,要用你就非得整一个Weblogic, webSphere之类的.
JDO的简单易用是最为人们所称道的,不需求你写大量无用的接口,不需求你担当什么特别的类,唯一所要做的就是对你的class文件做一下enhance.用了JDO,可以说我们的java程序这下真正OO了,我们无需再理睬数据库里面有啥表格了,存取都是以java object为对象了,全部数据库表格都是自动生成的.这一点可以说也是一个革命了.
在此之前,项目计划阶段,Database Schema计划可以说是个重头戏.而目前用JDO开辟,完好不需求数据库计划了.那你的Database Schema呢?就是你的Class啊,JDO会按照你的Class自动生成呼应的数据库表格.一个字,爽!从数据库可移植性来看,JDO也是上风明显,就我利用过的Kodo 和 Genie来看,几个简单利用程序换数据库时刻除了换一个JDBC driver, 换一下数据库URL,无需对程序做任何窜改. 这一点对EJB 来说又是处于劣势.从家庭出身来看,JDO也是诞生名门,从一开始就处于JCP管理之下.从企业级支持来看,它可以很好的和Session bean协同工作,关于企业级开辟,Session bean + JDO的方法是Session bean+entity方法的一个强有力竞争对手.固然有这么多长处,不过它的发展之路也非一帆风顺,这不,本年五月份JDO2.0的投票,IBM、Oracle、Bea三大巨子同时投了反对票.不过略微一想,便可以理解,这并非JDO本身技术有什么庞大缺陷,而是JDO动到这些巨子们的奶酪了.
Bea、IBM做着业界最为闻名利用服务器,weblogic和WebSphere,在EJB上面是投下了血本了,他们不能眼睁睁看着JDO来蚕食EJB市场.而Oracle, 还在卖着它自己的O/R工具Toplink, 看着JDO日渐强盛,他能不焦急么.不过呢,公司再牛,他也挡不住历史行进的车轮吧,终究JDO2.0的投票还是以绝对的票数(12:3)通过了.
还有别的散落江湖的Java长期化技术,如Hibernate、Castor、Toplink,他们固然没有皇家血统,不过实力也是不容藐视.就拿Hibernate来说,是javaworld评选出来的2003年度最佳java数据存取工具,目前可以说是大红大紫.而Castor和Toplink也算是历史长久了,在JDO没有出世之前,它们就在江湖上混着了.目前也占据着一定的市场.这些第三方的工具从功效上来说很近似于JDO, 只是各自的API互不相同.这也是后来JDO标准的呼声越来越高的一个缘由吧.这些第三方O/R mapping工具能在江湖上安身,也确切都有各自过人之处.如Hibernate金字招牌就是Open Source,支持几近世面上所能看到得绝大部份数据库,并且文档也非常齐备.Toplink么,可谓历史长久,又榜着Oracle这棵大树.目前来看,这些工具也占据着java数据库存取的不小市场.个人认为,随着JDO标准的不段完善,JDO产品的遍及,这一部份人员大概会在今后渐渐退出历史舞台.不过从Hibernate目前如日中天的气势来看,仿佛说这句话还为时过早.
关于这些技术优劣之争从它们方才诞生那天起历来就没有终止过,而各家各派也历来没有可以说服过对方.关于我们利用开辟者而言,撇开利用纯粹来争辩技术优劣并没有多粗心义.还是俗话说的好,没有最好的,只有最符合的.我们可以在做开辟的时刻可以挑选一个最符合于自己利用的技术,那就充足了.总的来说,JDBC面向RDBMS,对比合适关系数据库情势驱动的利用,比方统计表格数据,生成报表之类的利用.EJB 技术以J2EE利用服务器为中央,假如你的利用确切需求机动的可声明的事件边界,需求支持大容量的拜候和不中止的服务,需求利用服务器的集群,那么选EJB吧.JDO则面向对象,关于以域对象为中央的利用,包含图,树范子的利用,JDO是首选.
以上是“<b>闲谈Java数据库存取技术</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |