【EJB】(二)EJB的三种Bean

2024-08-25 17:32
文章标签 三种 bean ejb

本文主要是介绍【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并不是实现远程调用的唯一途径。在合适的需求下选择合适的框架!

这篇关于【EJB】(二)EJB的三种Bean的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106197

相关文章

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

Linux配置IP地址的三种实现方式

《Linux配置IP地址的三种实现方式》:本文主要介绍Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境RedHat9第一种安装 直接配置网卡文件第二种方式 nmcli(Networkmanager command-line

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要