EJB必须掌握的概念

本文介绍了EJB在J2EE架构中的角色与应用,探讨了EJB与JavaBean的区别,并详细解析了会话Bean、实体Bean及消息驱动Bean的功能与使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1、从J2EE整体架构上看EJB

     EJBJ2EE中用于构建分布式对象模型的一种技术,

     采用OO设计,基于CORBA标准,使用RMI低层技术完成分布式运算

     EJB是一个行业标准,必须部署到支持EJB的容器之中


2、与JavaBean的区别

     EJB运行在服务器上,而JAVABEAN运行在客户端上

     WEB端在J2EE中实际上是一个“客户端”程序。


3EJB的分类及主要使用


分类

子类型

保存周期

作用

会话Bean

Session Bean

无状态(stateless

短暂,容器一关闭就消失

1、             被远程客户端所访问,完成业务逻辑

2、             调用实体Bean

有状态(statefull

实体Bean

Entity Bean

CMP(容器管理持久)

永久,数据保存在数据库中

1、             ORM的一种实现

2、             操作数据库

3、             永远实现本地接口,远程端无法直接操作实体Bean

BMPBean管理持久)

消息驱动BeanMDB

Message Driver Bean

QUEUE(队列)

---

发送PTP消息

TOPIC(主题)

发送主题消息


EJB发展角度观察;

     1 EJB 1.1之前只有:SessionBeanEntityBean

     2 EJB 2.0开始就包含了新的组件:MDB,如果使用MDB则需要消息队列中间件支持,MDB是基于JMSJava消息服务)的一种应用。


4、三种EJB的关系

     J2EE中提供两种应用

      A、远程客户à MDBà Session Beanà Entity Beanà Database

      B  远程客户à Session Beanà MDBà Entity Beanà Database

     但在实际应用中往往只使用SessionBean + Entity Bean


5、会话与实体Bean中的主要方法说明

       A、会话Bean

     ·ejbActivate():从实例池中取出已有的对象继续使用

     ·ejbPassivate():将暂时不用的对象保存在实例池中等待再次被使用

     ·远程方法必须在远程接口(视图)中定义后才可以被远程客户端看见

       B、实体Bean


本地接口方法

对应SQL类型

Bean中的方法

备注

createlocal home

insert

ejbCreate(属性)

Insert通过此方法完成

ejbPostCreate(属性)

插入完成之后的收尾工作,一般为空

setterlocal

update

ejbStore()

一旦调用setter方法之后,则自动调用ejbStore()方法进行数据库更新

removeEJBLocalObject

delete

ejbRemove()

执行删除

findById

select id

ejbLoad()

实体Bean必须提供一个按ID查找的方法,此方法调用时不用单独编写EJB QLEJB查询语言)

findByXxx

select

--

需要单独编写EJB QL进行操作


6BMPCMP的区别


 

CMP

BMP

概念

容器管理持久,所有操作都由EJB容器完成

Bean管理持久,所有的代码必须开发人员手工编写

代码形式

抽象类及抽象方法的集合

所有的属性都在部署文件中配置

具体的一个操作类,所有方法不能为抽象,在相应的地方将方法体补充完整

执行效率

效率低

效率高

可移植性

可移植性高

可移植性低

总则

无论是BMP还是CMP最终全部都是ORM的一种应用,其实际的理论价值要比实现价值高

在实际开发中,EJB使用并不常见,而通过Hibernate去替代CMP操作


7EJB的方法调用过程

     ·初始化JNDI上下文

          |- Context ctx = new InitialContext();

     ·查询远程HOME接口

          |- 远程Home接口 home = (远程Home接口)ctx.lookup("JNDI名称") ;

     ·通过HOME接口产生REMOTE接口的实例化对象

          |- 远程接口 remote= home.create() ;

     ·调用远程方法

          |- remote.远程方法()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值