一、EJB与JavaBean

EJB = Enterprise Java Bean,分为实体Bean,消息Bean,会话Bean三种。它和JavaBean有本质的区别,最好不要将他们混淆起来,就像不要将Java和 
Javascript混淆起来一样。

JavaBean在一般情况下指的是实体类,在大部分情况下和POJO是同义词,基本构成就是一些字段和与之对应的 
setter、getter方法,如果一个JavaBean需要在不同的JVM的进程中进行传递,还需要实现Serializable接口; 

区别:

1、JavaBean是一个组件,而EJB就是一个组建框架。

2、JavaBean面向的是业务逻辑和表示层的显示,通过编写一个JavaBean,可以将业务逻辑的事件和事务都放在其中,然后通过它的变量属性将所需要的内容在表示层传递显示。

EJB是部署在服务器上的可执行组建或商业对象。EJB有一个部署描述符,通过这个部署描述符可以对EJB的属性进行描述。EJB不和表示层交互。

 

二、EJB与Spring

Spring和EJB都是两种Java领域模型(框架),当然有很多不同,其实比不需要关注两者的不同,以及可比之处,如果客户要求你使用EJB,你就用EJB,要你用Spring,你就用Spring。不用不需要知道,因为知道了没好处。如果客户没有要求,建议你用Spring,更加敏捷,它的依赖注入可以让它跟其它任何框架无耦合的组合。
所谓轻量级,就是它对容器(如sevlet容器或Ejb容器)的依赖更小,并不表示它的性能和功能比重量级的差,很多服务器中没有包含Ejb容器。

 

三、总结

EJB和Spring设计的角度根本不同,就目前来看,还不能说哪一个能完全打倒另外一个。首先EJB最初的设计思想考虑的是为分布式的应用服务的。就因为这个原因,使得开发一个EJB不难,但是开发一个好的EJB却非常难。此外对于中小型的应用项目而言,基本不采用分布式的解决方案,那么为什么要采取一个为分布式设计的方案来解决非分布式的问题呢? Spring就是为了解决这个问题而诞生的。

Spring可以与EJB进行协同的工作,Spring可以应用到EJB应用中去,同样,EJB可以在Spring应用中很好的使用。同时,Spring如今有力的支持注释:@Resource、@PersistenceContext、@PostConstruct、@PreDestroy、@EJB及@WebServiceRef。当然,Spring 中不只是能使用Hibernate这样的ORM框架,同样可以使用JPA。更妙的是,Spring越来越与应用服务器提供商无关了,很容易实现在不同的应用服务中进行移植。