科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件使用企业级JavaBeans前需要考虑几个因素

使用企业级JavaBeans前需要考虑几个因素

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

企业级JavaBeans(EJB)是J2EE平台中最复杂的技术之一,因此一些开发人员不愿意在他们的项目中部署EJB

作者:builder.com.cn 2007年6月4日

关键字: EJB J2EE java JavaBean

  • 评论
  • 分享微博
  • 分享邮件

企业级JavaBeans(EJB)是J2EE平台中最复杂的技术之一,因此一些开发人员不愿意在他们的项目中部署EJB。

本文面向那些仍旧对是否投入时间和精力学习并在他们的项目中部署EJB技术持观望态度的开发人员。首先,我们介绍了EJB的优点和缺点,然后,说明了何时你可能需要或不需要使用EJB。

最后通过说明我对EJB错误观念一些看法得出结论。

优点

  • 规范:EJB是一项技术规范的技术。(这既是EJB的主要优点也是一个主要缺点。)EJB规范几乎描述了实现的所有方面,包括数据类型,组件生命周期,角色分配以及很多其它方面。
  • 与J2EE紧密结合:J2EE平台中有一组完整的服务器技术,包括EJB和其它非常有价值的技术诸如servlets,JavaServer页,Java消息服务,J2EE连接器体系结构,Java数据库连接,Java认证与授权服务,Java事务API和JavaMail等。这使得J2EE和EJB成为一个很有吸引力的解决方案。
  • 可升级性:只要你将大部分资源管理函数传到应用服务器,供应商就可以运用复杂的升级算法。
  • 可访问资源管理系统:利用EJB容器,你可以获得成千上万行的代码来访问和管理资源,包括事务管理系统,安全管理系统和目录服务。没有EJB的话,你只能自己实现这些组件。

缺点

  • 大量复杂的规范:对于描述一个复杂分布式系统的规范来说这是很正常的,但是并不是里面的所有信息都需要编码,这使得规范成为一个很不方便的工具。
  • 庞大的文档:在开始开发一个项目之前,你通常需要阅读1000多页的文档,这是部署EJB的很令人畏惧的原因之一。
  • 增加了开发时间:EJB解决方案比普通Java代码实现要求更多的时间。调试EJB代码需要的时间也要比调试普通Java代码长。主要原因是因为你不能确定漏洞是在你的代码中还是在容器中。
  • EJB代码更复杂:例如,为了实现一个会话bean,你必须编写三个类,一个登录bean,你必须编写四个类。添加一两个部署描述符和一个最简单的“Hello world”应用就会生成10个文件而不是一个文件。
  • 重复设计的危险:这是规范复杂性的后果。如果你没有很好的理解EJB的概念,你就不能有效地使用该技术,而且你还可能把项目变得比实际需要的更复杂。
  • 规范改变:EJB是一项新兴技术,你的代码潜在地存在过时的风险,这就要求增加额外的工作和投入来使得它与新的EJB容器兼容。

什么时候你可能想要使用EJB

假设你有一个使用数据库的简单servlet Web应用。你使用JDBC从你的应用访问数据库。作为一个SQL查询的结果,你会得到拥有一些数据的结果集ResultSet,这些数据代表了你的业务对象。

这种方法使用数据不是很方便。你需要创建一个Java类表示一个数据库结构,你的代码可能如下所示:

MyObjectobj = new MyObject();
obj.setXXX(rs.getString("XXX"));
obj.setYYY(rs.getString("YYY"));

在将结果集换成对象表示与返回后,你需要考虑如何将这个逻辑转移到MyObject中。为了将servlet从JDBC访问细节中分离出来以及不在直接使用java.sql.*包中的类,你应该让该对象可以在数据库中找到自己,然后修改或删除它。

现在又有另外一个问题:如何通过某些查询找到数据库中的一个对象?如果你需要通过主键找到它,那么你需要将主键传给类构造函数即可。如果你需要通过某些准则查找,这将需要很多专用静态方法。如果需要的话,你可能还需要支持事务处理和滚回的方法。

当你的应用程序获得广泛应用时,正常运行时间百分比和可用性将变得十分重要,这时你会需要复制,快速对象持久性,对象高速缓冲区,数据库连接池,安全事务等等。

所有这些问题都可以由实体企业级Java Beans解决。你不会再犯许多程序员已经犯过的错误。如果你的bean是一个容器管理持久性bean,那么你只需要实现一两个接口,而不必考虑必须访问的数据库。如果不能完全满足你的需要,也没有问题,你可以使用Bean 管理持久性(BMP)实体自己实现持久性。

在你的应用程序业务域中,对象不仅保存数据,还有一些行为。这些行为代表业务逻辑。当你开始编写应用时,所有业务逻辑都存放在servlet中,所以你的应用需要一些servlets的支持。

你可以选择是复制粘贴业务逻辑代码,还是将它放在独立的类中。最后,可能有些用户要求在不同的Web页面中与你的应用进行交互,你需要保存每个用户请求之间的会话信息。解决这个问题的方法称为会话Bean,它封装了你的应用中的所有业务逻辑,它可以是有状态的或是无状态的。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章