robbin强调的是entity在大型项目中的失败,ERP不算小项目了,那么大的运算量用EJB也的确勉强.

一般的项目还是中小项目的,时间就是生命,效率就是金钱,时间拖长了就要没命,干活没效率就要没钱!用Hibernate还要整合他的session,手动save. 为什么那么辛苦呢,快速开发才是出路.

但是我认为特别场合下,还是需要骑墙,谁好用用谁的.

----------
项目中有没用动态条件查询?举个例子吧:比如说有这么一个页面,搜索员工,可以按照年龄,性别,部门,级别来查。用户可以只按照某一个条件来查,也有可能按照某几个条件来查,也可能所有条件都用上,因此假设页面上,每个条件都是一个下拉列表框,用户可以任意选择某几个条件来查询。这样的例子如果有,你怎么办?
----------
有的EJB server支持动态构造查询.但是我的OOSQL应该更好,呵呵.
给提提意见?
http://www.jdon.com/jive/article.jsp?forum=62&thread=9671

> 我向来反对用很花哨的编程技巧来做项目,而宁可多写些易懂好维护的代码。
很支持Horser这句话,适用的才是最好的。
robbin兄一直提到有一次惨痛的教训,不知能否说一下是一些怎样的难点,使项目最后失败。因为我看到不少项目失败,都是归咎于项目管理而不是技术层面的。

前面一个比较CMP和Hibernate的hot thread中,我详细谈过了,就是有80多张表,表关系异常复杂,全部用CMP实现,结果做到后来已经没有办法完整的用CMP表达清楚数据之间的关系了。


做小项目(不是一两张表),用轻量级ORM(前提是你必须熟悉该技术),开发速度非常快,远超过使用CMP。不要以为我总是在论坛对CMP唱反调,我就不懂CMP,我自己CMP,Hibernate都用,对两者都很熟悉,一开发起来,开发效率,运行效率,调试效率一目了然。

我们相信robbin兄绝对不是“吃不到葡萄说葡萄酸”的那类人:-D

实际上我也是想对CMP的性能和相关的开发方法探讨一下,也听一下大家的经验。

我碰到的是60多张表的,而真正的业务表(不包括那些简单的代码名称表)也就十几张。我们是把业务表独立放在一个JAR里的,只有业务表间的逻辑关系才做CMR。普通多表关联查询就直接在session bean里写SQL,因为这种查询一般就显示几个字段给用户,所以由resultset --> value object也不复杂,其他的处理就用CMP-CMR。目前项目没完成,开发效率,运行效率,调试效率还很难说。

其实CMP的ORM方案是半截子的,修改使用CMP,查询你还得自己写JDBC。

而JDBC对于复杂的持久对象的关系表达是非常无力的,因此抛开CMP的运行效率,开发效率和调试效率,单单只看技术框架的本身,CMP在ORM方面也是不完整的,而CMP作为EJB的优势都被前端的SLSB给做掉了,结果就是一个大而无当的CMP。

嘿嘿, CMP不是不能自己查询啊...
还是由于它再某些方面的运行效率导致采用jdbc取代, CMP能自动获得cache,而jdbc就做不到,所以什么时候用CMP查询,什么时候用jdbc也得视具体情况.只是不完善,也不能说不完整,不过谁又是完善的呢?

我觉的你不要动不动就以一副j2ee的卫道者的身份出现好不好。我建议你看看Ed Roman的书。我们每个人都是爱java,但爱不是所谓的维护他的什么地位。有不好的东西我们是不是应该提出来促进java社区的改进。entitybean并不是不好,只是目前的实现还远远达不到一个真正成熟的持久性技术。看看hibernate,我觉得起码entity ejb的功能度要达到这种程度才能使得实体bean真正流行开来。我用cmp有很多很简单的问题都无法解决,或是解决起来很麻烦。Ed Roman也是很早就使用entitybean的。现在他本人还是jcp的成员。别人难道不是喜欢java?但我们开发系统不是为了使用j2ee而使用j2ee,如果j2ee使得你的项目开发困难我为什么要使用呢?实体bena鼓吹的很多特点其实都是做不到的。(起码目前来看还只是一种理想)。现在sun之所以尽力推动jdo的标准化,正是因为实体bean的问题。别人也一样承认并提出了解决方案。而且你提出的什么“一个J2EE或EJB项目开发是否成功,和项目的架构设计非常有关系,前面我已经说过,EJB本身就是框架,限制你任意”自由发挥“,如果你不真正掌握EJB原理,遵循EJB设计模式去使用EJB,那么你的EJB项目必定会失败,Robbin的这个失败的EJB项目我认为基本是这个原因。”我觉得真是有点可笑。很多项目失败仅仅是因为ejb本身,而不是使用ejb的人。任何一个项目,即使不使用java技术,一样要求架构设计的优良。而一个优良的设计也可能因为提供的技术平台无法实现而出现失败。jboss4.0的cmp将通过hibernate来实现。cmp和hibernate决不仅仅是技术之争。这是两种不同的解决相似问题的解决方案。entity ejb不是不好,但目前的实现肯定是不好的。说明entity ejb还有很长的路来走。你还说什么标准之类的。我都不知道你为什么有这种想法。java的流行一个重要的原因是他决不封闭。他在不断的发展和完善自己。照你这样说,所有的发展和进步都可以放弃了。真是因为有hibernate,我更坚信实体bean能有好的发展,因为hibernate也是基于java的解决方案。hibernate能做到的ejb在技术上觉得可以超过他。但要是都是你这种想法,那java是真完了。我对你一直很尊重,你对java在中国的发展尽了值得所有人尊重的努力。我真心的希望你能够改变一下自己的思想。

这段话说的banq么?嘿嘿