用企业级JavaBeans前需要考虑几个因素
日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]-
企业级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)实体自己实现持久性。
- [1] [2] 下一页
-
- 用企业级JavaBeans前需要考虑几个因素 相关文章:
- ·用企业级JavaBeans前需要考虑几个因素
- 用企业级JavaBeans前需要考虑几个因素 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
精品推荐
热点TOP10
- ·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
- ·学习教程:Java Annotation 高级应用
- ·Windows XP下PHP+MySQL环境搭建
- ·smarty技术学习,修改php模板的一点体会
- ·PHP中的sprintf()函数的学习研究笔记
- ·PHP技巧:使用APC缓存优化PHP程序
- ·windows下Apache2+php4+MySql5集成简明教程
- ·PHP预定义变量
- ·突破Windows 2003 PHP服务器的新思路
- ·用Apache反向代理设置对外的WWW和文件服务器
- ·Mysql的常用命令
- ·如何在Form域中Post大于100K字节的数据
- ·详细学习PHP中对文件和目录的操作方法
- ·急速搭建属于自己的Discuz!6论坛
- ·如何利用PHP会话显示出当前在线的用户
- ·PHP编程中break及continue两个流程控制指令
- ·PHP项目将联合起来转向PHP5
- ·初学解决疑惑:PHP是什么?
- ·Discuz!5.5 JS的调用
- ·PHP4将结束更新并在明年退出历史的舞台
特别推荐
- ·PHP入门指导:如何学习PHP?
- ·Php+Mysql注入专题
- ·PHP:实现给上传图片加水印的程序代码
- ·PHP动态网站开发中常用的8个小技巧
- ·PHP初学者:配置Apache服务器并且设置DNS
- ·初学PHP指导:php.ini 配置详细选项
- ·好文分享:PHP入门的学习方法
- ·急速搭建属于自己的Discuz!6论坛
- ·PHP入门:初学来看配置文件PHP.INI的中文注释
- ·php.ini配置,php.ini 中的 php-5.2.0 配置指令详解
- ·总结:一些PHP学习过程中的心得和经验
- ·新手入门:JSP初学者必须掌握的语法点
- ·PHP技巧:PHP脚本编程中的文件系统函数库
- ·详细讲解PHP编程中分页显示的制作
- ·成为PHP编程高手应该遵循的三个准则
- ·谈谈生成静态页面的一些经验
- ·新手入门:详细解述七个软件开发的原则
- ·简单的webservice开发例子
- ·PHP木马攻击的防御之道
- ·基础入门:动态网页制作PHP中Session的概念
