我刚刚开始接触Hibernate不慎了解,对于EJB用了一段时间,大致说说我的看法。
首先我不太同意用EJB和Hibernate直接作比较,正如前面有人提到Hibernate犹如php一样,它的特点就是快速,灵活,方便。然后EJB 就不一样,他的一个前提就是Enterprise,而在Enterprise的环境下首要考虑的因素并不是Hibernate特点所具备的,当然我不反对从Data Mapping的角度来比较这个问题。
EJB 的最大特点就是分布的,安全的,事物的,其重点并不在于一个简单的数据库映射
从前面的讨论可以知道Hibernate的不具备分布和安全的特性,具有一部分的事物特性,然后这个事物似乎是建立在JDBC的transaction的上面,几乎就是jdbc的connection。但对于一个复杂的应用系统来说仅仅只有JDBC的trasaction是不足够的。因为在复杂的应用系统中提倡的是组件化开发,而不同组件的事物常常涉及到相互调用的问题,很明显,如果不在一个处理过程中的事物出来在hibernate来说是很难实现的,所以我不同意前面有关EJB的事物处理是一个弱点的说法。
之所以出现EJB的事物互锁的情况,我看绝大多数原因在于开发和部署人员的素质问题,和EJB的体系没有太大的关系。
至于以后企业开发的规范中是否会使用类似于Hibernate更高效灵活的数据绑定方式,那是肯定的(EJB 2.1的规范中已经支持order by的操作)。然而就单单从数据绑定的角度论述谁优谁劣没有太大的意义