技术开发 频道

Java O/R Mapping技术谁主沉浮?



    Hibernate草莽英雄

    最后登场的是Hibernate。Hibernate就像武侠小说中的草莽英雄,虽然不是出身名门,没有得到江湖中成名已久的高手的指点,却凭着自己的智慧与勤奋,依靠千千万万开源工作者的支持,在O/R Mapping技术领域中打下一片锦绣河山。Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

    Hibernate是一个独立的框架,不需要任何应用服务器的支持,也不需要部署描述符等文件,只需要一个配置文件和对应于持久类的映射文件即可实现O/R Mapping功能。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate支持EJB标准,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    下面,我们对以上三种O/R Mapping技术从三个方面进行一下比较总结。
    首先,从家庭出身来看。CMP无疑是这三者之中出身最为高贵的,CMP是EJB标准的一部分,是众多大公司的宠儿;其次是JDO,JDO是Java的老祖宗——Sun推出的标准,其出身也算是豪门,但是JDO一直得不到其它Java领域的大公司的支持,原因是JDO动了这些巨头们的奶酪;较之于前面两种技术,Hibernate出身可谓贫寒,它是开源的产物,不是任何Java著名的标准的一部分。

   其次,从技术层面上看。CMP存在明显的缺陷,诸如性能、不支持面向对象、开发难度大等;JDO与Hiberate很好的克服了CMP的缺陷。较之于CMP,JDO与Hibernate具有一下三个共同的优点:
 兼容性:规范明确,而不同容器中的实现各不相同,这是CMP的现状。而JDO与Hibernate由于是轻量级组件,不需要容器的支持,其实现对于任何应用来说都是一样的,因此可以兼容任何Java应用;
 灵活性:CMP通常需要重量级和高价位的应用程序服务器,而JDO和Hibernate无需应用服务器的支持;JDO和Hibernate对粗粒度和细粒度的数据对象设计都和适用;
 面向对象特性:面向对象语言的精华——继承与多态,在CMP这里是行不通的,而JDO与Hibernate是完全面向对象的。
最后,从取得的成就和发展前景上看。Hibernate无疑是成就最大的,依靠千千万万开源工作者的支持,Hibernate从一个不知名的开源项目,发展到在许多应用(特别是中小型项目)中几乎完全取代CMP,成为O/R Mapping技术的首选,并且这种趋势仍然在继续;而CMP众多大公司的支持下,也取得了不俗的业绩,作为EJB标准的一部分,CMP现在依然是众多大型分布式项目O/R Mapping技术的首选。

    相比之下,JDO几乎从来没有流行起来,其主要原因是既缺乏大公司的支持,也不被广大的程序员所接受。此外,Hibernate还有一个特别明显的优势就是它是开源的,有一个很好的免费的实现;而部署CMP需要在应用服务器上投入大量资金,而JDO则没有一个比较好的免费实现。这也是Hibernate流行的一个重要原因。
0
相关文章