转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> JAVA开发 >> 正文
EJB 3.0是Hibernate的克隆吗?         ★★★★

EJB 3.0是Hibernate的克隆吗?

作者:闵涛 文章来源:闵涛的学习笔记 点击数:973 更新时间:2009/4/22 23:33:22
  摘要 Sun的EJB 3.0规范正处于其最后的"冲刺"阶段,许多公司都在为遵循这一规范而忙碌着。这个EJB规范最新版本所提供的众多优点中比较突出的当属其数据库功能,但是一些开发人员感到,这个规范仅仅是Hibernate持久性存储引擎的一个"克隆"版。真的吗?本文正是想讨论这一问题。

  实践证明,Hibernate是针对于Java语言所创建的最优秀的持久化存储引擎之一。至今,我还清晰地记得第一次使用Hibernate工作的情景。当时,我们已经有了一种现成的持久化存储引擎,但是这个引擎将消耗大量的系统资源并且从未真正正确工作过。令人惊奇的是,Hibernate"瞬间"解决了我们的持久化存储问题!这真是一个"天赐之物"。不觉间,时间快速推进到今天。EJB 3.0又浮出水面,并且不久我们就要计划把我们当前的EJB 2.x服务器向这个更高版本升级了。然而,仔细地分析一下EJB 3.0中所作的持久性存储变化,有人可能会感到惊讶-这不是来自于Hibernate的一个"克隆"品吗?难道Sun当真"偷窃"了来自于Hibernate的设计吗?我的回答是,情况要比这些复杂得多。

  一、 EJB 3.0

  EJB 3.0必须实现的重要目标之一是,要使之成为更为有用和更易于使用的开发工具。Sun公司的Linda DeMichiel认识到,为了成功实现这一目标,EJB 3.0必须要基于开发人员今天正在使用的现有库;否则,它将会导致一种困难的升级操作并且可能会引不起足够的重视。因此,来自于Oracle,JBoss,Apache,BEA,Novell,Google的成员和其它方面的专家都被邀请参与制订这一规范。这个小组的目标是,生产一种规范-能够使得EJB更易于开发并且还要创建一种便于开发人员能够容易地实现升级的持久性存储标准。

  当这个小组开始开发EJB 3.0规范时,他们很快认识到,其中很多特征应该在功能上与所有的主要的供应商和库保持一致。我们将在下面的几节中讨论这些特征。

  (一) EntityManager

  这个EntityManager负责处理一个事务。在JDO中,它被称作持久性存储管理器,而在Hibernate中称它为一个会话。在GlassFish工程中,EntityManager被作如下描述:

  其实,一个EntityManager实例与一个持久性存储上下文相关联。一个持久性存储上下文是一组实体实例,其中的任何一个持久性实体都是唯一的一个实体实例。在该持久性存储上下文中,实体实例及其生命周期都是可被管理的。这个接口定义了用于与持久性存储上下文进行交互的方法。EntityManager API用于创建和删除持久性实体实例-通过其主键查找实体和查询实体。

  这个可由一个给定的EntityManager实例管理的实体集合是通过一个持久性存储单元进行定义的。一个持久性存储单元定义了所有类的集合,这些类是相联系的或由应用程序加以分组,并且它们必须共存于它们到单个数据库的映射中。

  (二) 命名查询

  一个命名查询是一个预定义的查询,它被赋予一个名字,这样它可以在以后通过该名字加以存取。用数据库术语来说,命名查询被称作存储过程。当结合本机查询时(见下一节),数据库查询应该是非常轻松的。

  (三) 本机查询

  不是使用具有很多限制性的实体查询语言,本机查询允许直接从EJB中全面地使用SQL语言。现在,我们有可能直接在数据库上调用count(),max()和其它功能而不必付出其它周折。

  (四) 回调监听器

  回调监听器,是一种事件监听器,或用数据库术语来说是,是一种触发器。它们支持当一个事件发生时进行代码调用。

  (五) 脱离/重新依附对象

  能够脱离开一个EntityManager的控制范围而又能够重新返回而被持续化存储,这在EJB 3.0版本之前是无法实现的。在以前,为了实现这一目的,必须把来自于一个对象的值必须被复制到一个POJO(普通Java对象)中,然后被再往回复制。

  在EJB 3.0之前,我总是使用值-对象并且把来自于EJB的值复制到一个POJO中;然后,使用在前端使用该对象。如果该POJO中的一个值被改变,它将不得不被"推回"到该EJB;然后,该值被复制回来。这种"混乱"状态现在已经不复存在了。一个对象甚至能够完全离开JVM并且在以后某个时期返回回来并且被重新依附。这种改变所带来的效率是不能被低估的。

  (六) O/R映射类型

  能够把一个EJB中的字段直接映射到一个数据库中的列上是EJB 3.0以前也是很难实现的。这一功能实现一直不那么令人满意,并且很多第三方开发工具都一再推迟对这种功能的支持。我最喜欢的xDoclet的一个特征是,它能够定义在我的EJB中每一个持久性字段对应哪种SQL类型。借助于EJB 3.0和注解技术,我们不再需要使用一种第三方工具。

  二、 EJB 3.0对象

  值得注意的是,企业Java Bean现在被称为POJO。随着注解技术的出现,java bean不再需要接口、home和描述符支持文件。仅仅这个特征就为EJB 3.0赢得了大批开发团队的青睐。

  现在,既然企业对象不再被锁定到应用程序服务器内,那么我们不再需要把它们复制进和复制出POJO,这样就允许不必把应用程序服务器后端和前端区别得那么严格,从而使开发人员能够更容易地显示和编辑存储于EJB中的数据。我们很快就会看到这些变化对xDoclet所产生的有趣影响。

  三、 结论

  尽管毫无疑问,EJB 3.0基于Hibernate,但是,事实上它是基于所有的顶级的对象/关系映射工具。看来,这个工具并非这些工具简单"修改"版,而事实上是由Sun创造的又一部杰出的"电影"。不必让开发人员学习一种"全新的但还是功能相同的工具",开发人员只需要轻松地花一些时间就可以升级到新版的EJB 3.0中,因为EJB 3.0正是基于他们已经了解和喜欢的工具创建的。


[聊天工具]监视邮件的利器——PopTray3.0  [聊天工具]网易口对口(V3.0 beta Build 563)功能介绍
[系统软件]交叉编译sshd for IXP425 ARM  Platform by MVL 3…  [常用软件]NetMeeting3.0 呼叫之诀窍
[常用软件]秀Time Winamp 3.0b3上手指南  [网页制作]JavaBean与EJB有何不同之处
[网页制作][J2EE] 实战开发EJB  [网页制作]FW - Twist and Fade 3.0 介绍
[Web开发]Eclipse 3.0 上配置JSP开发环境  [Web开发]EJB 客户端程序_
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台