EJB的分类简介

       
EJB可以分为三类:

  • 会话Bean(Session Bean)
  • 消息驱动Bean(Message Driven Bean)、
  • 实体Bean(Entity Bean)

用途


       会话Bean主要用于实现业务逻辑,客户端通过SessionBean来对数据库进行操作。但是SessionBean只处理逻辑,真正与数据库的交互是通过EntityBean进行的数据交互。
       实体Bean是一种实体模型,主要是实现OR映射,负责将实体数据和数据库进行交互。使用和Hibernate大同小异。
       消息驱动Bean在EJB2.0中不存在,是EJB3.0之后才提出的。他是基于JMS消息,只能接受客户端发送的JMS消息并进行处理。比较适合移出处理请求的场合。这样可以避免客户端的等待。

会话Bean


       对于会话Bean,有分两种。一种是有状态的会话Bean,另一种是无状态的会话Bean。
       1、有状态的会话Bean,很容易理解,即服务端保存与客户端的会话。即服务端管理此状态。每个实例都与客户机相关联并保持会话状态。声明方式 @Stateful
       常用的业务逻辑:注册用户,订单登记等。
实现原理图
EJB的分类简介_第1张图片


       2、无状态的会话Bean,客户端不保存与客户端的会话。即:服务端不管理该对话状态。声明方式@Stateless
常用的业务逻辑:


       所以有状态会话Bean比无状态会话 Bean具有更多的功能,而无状态会话Bean实例可以通过 EJB容器自由地在客户机之间交换,从而少量的会话Bean就可以服务于大量的客户机。

实体Bean


实体Bean是域模型对象,主要是数据。代表一种记录类型。

@Entity   //声明为实体Bean
public class Person implements Serializable{

    @Id
    private int id;    //主键

    private String name;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

}

消息驱动Bean


       消息驱动Bean,也是有两种,一种P2P(Point to Point)方式,另一种是Pub/Sub (Publish/Subscribe)方式。
       1、P2P模型中,主要指的是一对一的信息交互。每个消息可以被发送到一个特定的队列中,而另一端则从队列中进行获取。总之,他们的交互依赖于那一个消息队列。
       2、Pub/Sub模型中,主要侧重的是广播。他们交互的称之为主题Topic。Pub发布一个Topic之后,所有的Sub都会收到一样的消息。


这两种消息驱动Bean对比:


       以上是EJB的分类,之后会对每种Bean进一步总结。

你可能感兴趣的:(ejb)