【EJB】(二)EJB的三种Bean

上篇博客,我们对EJB进行了简单的介绍,这篇博客我们来简单介绍一下EJB的三种Bean。

一、Session Bean
       会话Bean,实现会话中的业务逻辑,每当客户发出一个请求,容器会选择一个Session Bean来为客户端服务,客户端通过调用Session Bean的方法来访问数据库。

       Session分为有状态Bean和无状态Bean。我们最常用的是无状态Bean。
       无状态的Session Bean主要用来实现单次使用的服务,该服务能够被启用多次,但是由于无状态Session Bean并不保存任何有关状态的信息,其效果是每次调用提供单独的使用。无状态的Session Bean分为两种Local接口和Remote接口。

Remote接口:

@Stateless  
@Remote
public class HelloworldBean implements Helloworld{    
      
    public String sayHello(String name){  
        return name + "您好!";      
    }  
}
local接口:

@Stateless
@Local  
public class HelloworldBean implements Helloworld{    
       
    public String sayHello(String name){  
        return name + "您好!";      
    }  
}

        有状态的Session Bean是可以维护自身状态的,每个客户都有自己的实例,在用户保存生命周期内,有状态的Session Bean保持了用户的信息,即“状态”。
        建议采用有状态的Session Bean的情况:1.·Bean需要描述一个于特定客户端的会话状态;2.Bean需要在客户端的多个方法调用之间保存调用信息;3.Bean作为应用程序的其他组件和客户端的中介者,呈现一个简单化的视图给客户端;4.在调用接口里,Bean管理很多企业Bean的工作流。


二、Entity Bean
       实体Bean,实现一个业务实体。Entity Bean代表真实物体的数据,Entity Bean是持久化的数据组件,代表持久存储的商业实体对象。通常情况下,每个Entity Bean对应于关系数据库中的单张表,Entity Bean的单个实例对应于表中的某一条数据。

       根据永久保存方式的不同,分为BMP(Bean-Managed-Persistence 组件管理持久性)和CMP(Container-Managed-Persistence 容器管理持久性)两种。它们所实现的目的是相同的,都在于提供数据。但是这二者还存在差别,就是在于它们维护数据的角色不同。其中,BMP是由Bean自行维护数据的一致性,而CMP是有EJB容器来维护的。在BMP方式下,需要这类Bean的程序设计人员通过撰写代码来获取数据。EJB容器只会通知BMP何时可以安全的在数据库中增删改查数据,除此之外不会给予其他的协助。而在CMP方式下,CMP内并没有与数据存储有关的代码。

        在EJB3.0中,Entity Bean仅作为普通的Java对象来使用,它负责跟数据库表进行对象与关系映射(O/R Mapping)。而且EJB3.0可以通过注解来映射实体:@Entity来表示这个实体是Entity Bean,@Table表示实体对应数据库的表名,@Id表示这个Bean的主键,@Column表示属性对应数据库的字段。具体参考以下代码(set get方法省略):

@Entity
@Table(name = "TB_MajorChooseCourseTime")

public class MajorChooseCourseTime{

	@Id(name = "Id", length = 50)
	private String Id;

	@Column(name = "beginChooseTime", length = 50)
	private String beginChooseTime;

	@Column(name = "endChooseTime", length = 50)
	private String endChooseTime;

	@Column(name="isDelete",length = 50)
	private int isDelete;


}

三、MessageDriven Bean

       消息Bean作为JMS(Java Message Service)Java消息服务的API的监听者,异步处理其中的消息。

怎么理解JMS呢?JMS就是消息服务,一个与平台无关的API,是Java平台上有关面向消息中间件的技术规范。         MessageDriven Bean是用来专门处理基础消息请求的组件,能够轻松的与其他EJB交互。消息驱动Bean具有处理大量并发消息的能力,并且如果一个消息执行很长时间而执行结果无需向用户实时反馈时,也非常适合使用消息驱动Bean,它能够避免客户端长时间等待一个方法调用直到返回结果。比如订单成功后向用户发送一封电子邮件或短信等.

         JMS有两种工作模型:点对点P2P模型和发布/订阅模型。

1.点对点模型。

        P2P模型中有发送者、接收者和消息队列。每个消息只有一个消费者,即消息一旦被消费,消息就不会再在消息队列中;消息的发送者和接收者不存在时间上的依赖性,也就是说当发送者发送了消息之后,不论接收者有没有正在运行,都不影响消息被发送到队列中;接收者在成功接收了消息之后,需要给队列应答成功;每个消息都被发送到一个特定的消息队列中,接收者从消息队列中获取消息,消息队列保留着消息,直到它们被消费或超时。


2.发布/订阅模型。

       Pub/Sub模型中有主题、发布者、订阅者。客户端发送消息到主题,多个发布者将消息发送到主题,系统将这些消息传递给多个订阅者。其中每个消息可以有多个消费者;发布者和订阅者之间有时间上的依赖性,针对某个主题的订阅者,他们必须建立一个订阅之后才能消费发布者的消息,并且为了消费消息,订阅者必须保持运行的状态。



小结:

1.每一种Bean都有各自不同的用法,这一点的区别还是很明显的。在合适的地方做合适的事情!

2.J2EE不是必须使用EJB,EJB并不是实现远程调用的唯一途径。在合适的需求下选择合适的框架!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值