[转载] 关于EJB的一些话,只愿大家能得到一点反思.
http://www.cnjbb.org/thread.jsp?boardid=24&threadid=40909&pageno=last#lastpost
(上面是源地址,里面有些回复!)

这是我在其它论坛上关于EJB的发言,我并不要求别人认同我的观点,只愿大家不要被一种流行的东西所迷惑,认真的学习你认为最有价值的东西,真正的技术是不随时间而改变价值的东西.

首先,现在的程序员跟风的太多了,流行什么就崇拜什么.
EJB是什么?必须用火车来运的一杯水,这就是EJB.

不客气地说EJB是给那种水平不高的客户程序员玩玩的傻瓜产品,大家在网上可以看到,2002年,国内的大多数程序员对EJB还只停留"名词"的阶段,我已经写出EJB开发的教程.但当我把这种东西完全弄透了后,我就扔了它,我基本上没有在这里讨论过EJB的相关技术.


本来我们可以非常方便地得到数据对象,而EJB却要先一条白金的轨道,然后用一列有各种功能的火车把只有一杯水容量数据对象给运过来.

如果你的应用只是自己做着一个人测试着玩玩不要紧,你可以用EJB,但如果你想得到高性能的应用,那么,EJB不能满足你,可以这么说,EJB在设计的时候根本就没有考虑过性能!

在我认为,J2EE技术中,第一失败的是Java Mail,第二就是EJB,评论一种应用的标准不是凭个人的喜好,一是看它实际的性能,二是看它的应用程度.象structs,taglib这种东西,当然不能说一点用也没有,但我们要看投入的和得到的是否成比例.你花十倍的努力只能得到10%的效果,那就垃圾,很多人花了大量的时间去学习这些东西,然后得到了10%的效果是却很开心.

下面这一段不是我说的,是转贴来的:
"从EJB 2.0以后,Entity Bean 成为了EJB容器必须提供的特性。再加上EJB 2.0 对CMP 的改进,在一段时间里,Entity Bean 成为了资源层实现的首选技术。CMP Entity Bean 实际上就是一个O/R Mapping 工具,每个Entity Bean 可以看作关系型数据库中一条记录在对象系统中的对应物,持久化管理器会自动处理它们的CRUD 操作、自动维护它们之间的关联。

但是,Entity Bean 的整个概念实际上从未清晰过。比如说,既然EJB 主张在Session Bean中实现业务逻辑,Entity Bean 为什么还可以拥有远程接口?既然提倡使用本地接口、访问Entity Bean,为什么还要通过JNDI 来查找它们?既然Entity Bean 被用作原始数据的面向对象封装,为什么还要给它们加上诸如事务、安全等面向业务逻辑的基础设施?实际上,这些都是EJB 1.x 规范中概念混乱留下的后遗症,摆脱这些尾大不掉的麻烦需要对整个EntityBean 体系作出根本性的改变,在本文的后面部分我们将看到EJB 3.0在这方面的改进。

当我们选择一个O/R Mapping 工具时,该工具的映射描述能力是一个重要的参考依据\uFFFDD\uFFFDD它能够在多大程度上贴切地映射我们的领域对象模型?由于EJB的复杂结构,实际上你不能用在EJB中使用继承,这就对领域模型造成了限制。不妨想想看,如果不允许继承,你应该如何实现《分析模式》中的Party 模式呢?

另外,Entity Bean 提供的查询能力极其有限,你无法在CMP Entity Bean 中使用动态查询,也无法进行非对象查询,当然更无法直接执行SQL 语句。在Floyd Marinescu 的《EJB 设计模式》一书中提出了“用JDBC 读取数据”的模式:对于以查询分析为主的业务需求,应该用JDBC(而不是Entity Bean)来实现,这就足以证明Entity Bean 的查询能力非常欠缺。

技术应该被用于充分表现领域模型,而不是给领域模型造成诸多限制,甚至破坏面向对象设计。从这个角度来看,Entity Bean 是一个彻头彻尾的失败者。如果只能提出一条关于EJB 的建议,那么我的建议将是:绝对不要使用Entity Bean。"
------

回复此文章 |


这个问题我也想过,跟上面想的差不多,但里面提到绝不使用Entity Bean不敢苟同!

我认为的是学习还是得掌握EJB的,EJB在J2ee里算是比较难的技术,可能把EJB掌握了才算掌握了J2ee吧~!


------

2年前写过关于EJB的低级教程,就有资格对EJB说三道四了?
我正准备接受Hibernate、JDO等非ejb的存贮方式的时候,发现风向又变了。

批评EJB的国内程序员,又有几个真正作了几个像样的配得上j2ee大名的系统?
------

回复此文章 |

恰恰相反,j2ee里面最容易的是ejb.
j2ee里面复杂的技术太多太多,一般人能够熟悉一些就很不错了。
ejb在j2ee里面只能算是幼儿园级的。
------

回复此文章 |

J2ee博大精深,其实有些烦人,我又调用不了自己的JavaBean了,也不知道错在哪一步!

哎,不过我打算自己弄了,实在不行了再来讨教!

到处碰钉子,我看得找些像样的资料了,现在连本Jsp/Servlet的书都没有呢!

------


hofman   2005-11-19 22:14:16 评论:0   阅读:1679   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

Copyright@2004-2010 powered by YuLog