您的位置:首页 > 其它

会话EJB系列(二)EJB分类

2015-07-22 09:06 253 查看
EJB规范中定义了三种Bean:

会话Bean(Session Bean)

实体Bean(Entity Bean)

消息驱动Bean(MessageDrive Bean)

一.SessionBean的概念和作用

(1)定义

作用:用于处理业务逻辑的完整组件。

当SessionBea部署在在EJB容器中后,客户端获取该EJB组件,并调用它的方法,至方法结束,称为:客户端与SessionBean之间的一次会话,简称为会话Bean。

(2)EJB容器中SessionBean与Spring容器中POJOBean对比

可以把运行在EJB容器中的Session Bean,看做是运行在Spring容器中的POJOBean,只是SessionBean更强大一些而已,如:

1)并发与线程安全

EJB容器提供多线程并发功能,用于处理数量众多的客户端,但开发者完全不需要理会多客户端并发的线程安全问题,就像开发普通Java类一样。

2)方便Web Service支持

支持基于SOAP(Simple Object Access Protocol,简单对象访问协议)的WebService的访问,只需要少量配置

3)事务和安全管理

EJB以生命方式管理运行在其中的SessionBean的事务和安全

类似于Spring容器通过AOP以生命方式管理运行在其中的POJO Bean事务

(3)SessionBean分类

当客户端调用会话Bean的业务方法时,实例变量会一直记录着客户端的状态,称作“会话状态”。

1)Stateful Session Bean

有状态的会话Bean为特定客户端程序保持,用1-多个实例变量来记录会话状态,其状态在会话过程中保持,会话结束则不再保存。

2)Stateless Session Bean

无状态的会话Bean不为特定的客户端程序保持状态,不需要实例变量来记录会话状态,其状态仅限于方法调用的时候存在,当方法结束后不再保存

对比可知,有状态的会话Bean往往需要额外的系统开销来维护会话状态,所以性能要低一些。只有无状态的会话Bean可对外提供WebService,其他EJB不具有这种功能。

二.Message Driven Bean的概念和作用

(1)消息驱动Bean与事件监听器的对比

消息驱动Bean就是一个JMS消息的异步消费者,相当于一个事件机制中的事件监听器。

区别:事件监听器监听的是事件源上的事件;消息驱动Bean监听的是JMS的到来

(2)消息驱动Bean与无状态SessionBean对比

消息驱动Bean本身由无状态SessionBean变种而来

1)相同点

不会保留任何客户端状态,对所有客户端都是同等的

可以处理来自多个客户端的消息

2)不同点

客户端不能直接调用消息驱动Bean,只能通过发送JMS消息到消息目的地来触发消息驱动Bean。

消息驱动Bean本身由无状态SessionBean最大的优势在于“完全解耦”,无需获取消息驱动bean,甚至不需要知道消息驱动Bean的存在与否,只需要向目的地发送JMS消息就可以实现与消息驱动Bean的通信,相当于间接调用消息驱动Bean的onMessage方法。

三.实体和JPA

(1)EJB中的实体Bean与Hibernate中PO对比

EJB3中的实体Bean,是一个轻量级的持久化对象,就像Hibernate中的PO一样

1)相同点

实体Bean本身不具有持久化能力,需要JPA(java Persistence API)来操作这些实体,方可完成数据库的持久化访问。

2)不同点

改用Annotation来管理实体和数据库表之间的映射关系,而不是XML映射文件

(2)DAO与EAO

1)轻量级Java EE

以Spring+Hibernate为核心, 需要在Spring容器中建立DAO(Data Access Object)层用于实现数据库的访问逻辑,(建立在PO+Hibernate持久化API基础之上)

2)经典Java EE

以EJB为核心,需要在EJB容器中建立EAO(Entity Access Object)用于实现对底层数据库的访问,(建立在Entity+JPA基础之上),本质是类似的

(四)总结,EJB三种Bean

会话Bean,分为两种:有状态、无状态。较Spring的POJOBean有如下优势:并发与线程安全、只是WebService、事务和安全管理

消息驱动Bean,是JMS消息的异步消费者,由无状态Session变种而来。

实体Bean,类似Hibernate中的PO,并改用Annotation来管理实体和数据库表之间的映射关系。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: