EJB的三种组件

2024-08-25 15:32
文章标签 组件 三种 ejb

本文主要是介绍EJB的三种组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

EJB(Enterprise JavaBeans)是使用Java语言构造可移植的、可重用的和可伸缩的业务应用程序平台。EJB是EJB容器的特定运行时环境中执行的一段java代码,容器提供若干组件服务。
EJB组件有三种类型:
  • 会话bean;
  • 消息驱动bean;
  • 实体;
会话bean和消息驱动bean用于实现EJB应用程序的业务逻辑,而实体用于持久化。


如图,EJB3 API的整体组织情况。java持久化API完全独立于EJB3容器。业务逻辑处理由两组件:会话bean,消息驱动bean容器管理。持久化对象成为实体,由持久化提供器通过EntityManager接口管理。
会话bean
会话bean有两种类型:有状态(stateful)和无状态(stateless)。既可以在本地调用会话bean,也可以使用Java RMI远程调用。无状态会话bean可以暴露为Web服务。
消息驱动bean
与会话bean一样,MDB也处理业务逻辑。但是,MDB在一个重要方面有所不同:客户端从不直接调用MDB方法。相反,有发送到消息服务器的消息触发MDB,这样就允许在系统组件之间发送异步消息。典型的消息服务器有IBM WebSphere MQ、Oracle Advanced Queueing 和TIBCO。MDB通常用于健壮系的集成和异步处理。
实体和JPA
JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。持久化就是把java对象内包含的数据自动存储到数据库中。EJB3中的持久化由JPA管理。ORM在本质上是使用配置把java对象中保存的数据映射到数据库表的过程。持久化提供器在本质上是支持EJB3 Java持久化API(JPA)的ORM框架。
JPA定义了如下标准:
  • 用于把实体映射到数据表的ORM配置元数据的创建;
  • EntityManager API——用于对实体执行CRUD持久化操作的标准API;
  • Java持久化查询语言(JPQL),用于搜索和检索持久化应用程序数据。
因为JPA标准化了Java平台的ORM框架,所以你可以插入ORM产品(比如JBoss Hibernate、Oracle TopLink或BEA Kodo )作为应用程序和底层JPA“持久化提供器”。
使用API构造应用程序的持久化逻辑,就必须使用实体。实体是持久化到数据库中的java对象。
JPA EntityManager接口以设计提供持久化服务的方式管理实体。虽然实体通知JPA提供器如何映射到数据库,的是那会实体并不持久化自己。EntityManager接口从实体读取ORM元数据并且执行持久化操作。JPA提供处理生命周期管理、性能优化、缓存和事务管理的功能。

这篇关于EJB的三种组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接