一、为什么使用EJB ?

企业Bean执行在EJB容器中。企业Bean实际上就是一个封装了业务逻辑的Java类,那么我们为什么要使用EJB呢 ?

1.最重要的原因:分布式。简要的说,分布式能够将分布在各处的资源综合利用,可是对于用户来说展现的是一个统一的总体;分布式能够动态分配任务,分散物理的和逻辑的资源。从而提高运行效率;分布式技术能够避免因为单个节点失效而使整个系统崩溃的危急。

2.分布式对象之间的事务支持,RMI(Remote
Method Invocation,远程方法调用)不支持事务。

3.支持不同的client,仅仅要少量代码。就能够让远程client訪问到企业Bean。

    二、EJB的基本分类

    1.Session Bean

即会话Bean。能够运行业务逻辑操作。如注冊用户、订单登记等。

问:什么是会话?

答:即从client获得EJB对象開始,然后调用EJB的方法(能够多次),直到client声明周期结束或client释放了EJB对象为止,称为一次会话。

问:Stateful Session Bean 和Stateless
Session Bean有什么差别?

答:Stateful
Session Bean 即有状态的Session Bean,Stateless Session Bean即无状态的Session Bean。所谓的有状态和无状态,是由Session Bean的成员变量决定的。

·Stateful Session Bean:即EJB可以为同一个client在多次请求(方法调用)之间保持状态信息。

·Stateless Session Bean:并不是是说EJB不能存在状态,而是说EJB容器不会对EJB的状态做管理。

简言之,有状态的Session Bean,即client每次请求都会创建一个新的对象;

无状态的Session Bean,就是client每次请求都訪问的一个对象。

2.Message Driven Bean



    Java 消息服务( Java Message
Service。 简称 JMS) 是企业级消息传递系统, 紧密集成于 Jboss Server 平台之中。

企业消息传递系统使得应用程序可以通过消息的交换与其它系统之间进行通信。

    消息驱动 Bean(MDB)是设计用来专门处理基于消息请求的组件。 它是一个异步的无状态 Session Bean, client调用 MDB 后无需等待, 立马返回,
MDB 将异步处理客户请求。


    3.Entity Bean

持久化是位于 JDBC 之上的一个更高层抽象。持久层将对象映射到数据库,以便在查询、 装载、 更新, 或删除对象的时候, 无须使用像 JDBC 那样繁琐的 API。

在 EJB 的早期版本号中。持久化是 EJB 平台的一部分。

从 EJB 3.0開始, 持久化已经自成规范,
被称为 Java Persistence API。

Java Persistence API 定义了一种方法,能够将常规的普通 Java 对象(有时被称作 POJO)映射到数据库。 这些普通 Java 对象被称作 Entity Bean。

EJB学习(四)——Enterprise Bean(企业Bean)和Entity Bean(实体Bean)的更多相关文章

  1. EJB学习笔记

      1 J2ee概述 J2ee是企业级的计算平台,它为分布式和基于组件的软件开发提供了一个“操作系统” Ant是什么工具?? EJB: 什么是EJB? 是一种server端组件结构,简化了开发分布式企 ...

  2. EJB学习

    EJB:企业级JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件. EJB主要有三种Bean: Session Beans: 会在单个特 ...

  3. [spring源码学习]四、IOC源码——普通bean初始化

    一.代码例子 此节开始涉及到一个bean具体生成和保存的过程,仅仅涉及到最简单的bean,代码依旧是最简单的 public static void main(String[] args) { Defa ...

  4. [原创]java WEB学习笔记99:Spring学习---Spring Bean配置:自动装配,配置bean之间的关系(继承/依赖),bean的作用域(singleton,prototype,web环境作用域),使用外部属性文件

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. J2EE的十三个技术——EJB之实体Bean

    概述: 实体Bean与会话Bean不同,实体Bean是持久的,即使应用程序结束,它仍然存在.它允许共享访问,具有主键. 组成: 1)本地(Local)接口 本地访问EJB,只有在EJB与客户在同一个应 ...

  6. Spring 学习笔记 3. 尚硅谷_佟刚_Spring_配置 Bean

    1,bean 的配置 <bean id="helloWorld" class="com.yfy.HelloWorld"> <property ...

  7. spring深入学习(二)-----bean的生命周期、IOC容器bean装配

    bean的生命周期 1.实例化Bean对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBea ...

  8. 我的EJB学习历程

    http://blog.csdn.net/sinapaper/archive/2004/06/28/28659.aspx http://blog.csdn.net/sinapaper/archive/ ...

  9. 持久化API(JPA)系列(三)实体Bean的开发技术-建立与数据库的连接

    在EJB 2.x中.EJB有3种类型的Bean.各自是会话Bean(Session Bean).消息驱动Bean(Message-Driven Bean)和实体Bean(Entity Bean). 随 ...

  10. EJB_开发单表映射的实体bean

    开发单表映射的实体bean 实体bean 它属于java持久化规范(JPA)里的技术,实体bean通过元数据在Javabean和数据库表之间建立起映射关系,然后Java程序员就可以随心所欲的使用面向对 ...

随机推荐

  1. spring属性的三种注入方法

    (1)使用set方法: public class Book {  private String bookname;public void setBookname(String bookname) {  ...

  2. BZOJ 3065 替罪羊树+动态开节点线段树

    思路: RT 可以看VFK的题解 我写了半天拍了半天... 不过是$nlog^2n$的 要写垃圾回收的 线段树 如果某个节点的sum是0  也可以free掉 //By SiriusRen #inclu ...

  3. 2015 多校赛 第一场 1001 (hdu 5288)

    Description OO has got a array A of size n ,defined a function f(l,r) represent the number of i (l&l ...

  4. C#控制台显示进度条

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Prog ...

  5. Linq怎么支持Monad

    在上一篇创建了我们的第一个Monad, Identity<T>. 我们确定了类型要变成Monad, 它必须有一个type constructor(Identity<T>), 和 ...

  6. [原创]一道基本ACM试题的启示——多个测试用例的输入问题。

    Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数 ...

  7. vue-cli 安装

    1    node 下载      http://nodejs.cn/download/ 安装 2  npm install vue-cli -g 3  vue init <template-n ...

  8. spring的四种数据源配置

     DriverManagerDataSource   spring自带的数据源,配置如下: <bean id="dataSource" class="org.spr ...

  9. Hadoop 技术笔记

    Flume与Kafka Flume 是一个分布式,可靠的,可用的服务,有效的收集,聚合和移动海量的日志数据.它有一个简单而灵活的架构,基于流数据流.具有很好的冗余和容错性,以及可靠性和多故障转移和恢复 ...

  10. mmap,malloc分配随机内存

    随机数1G #cat malloc_rand_1g.c #include <stdio.h> /* printf, scanf, NULL */ #include <stdlib.h ...