【进阶EJB】深入探讨三种Bean(二)——Entity Bean

通过上一篇文章,我们介绍了【进阶EJB】深入探讨三种Bean(一)——Session Bean,这篇文章继续介绍EJB的三种Bean,今天我们重点介绍一下Entity
Bean。

Entity Bean,通过名字我们就知道是实体Bean是存放数据的。Entity Bean是持久化的数据组件,代表持久存储的商业实体对象。通常情况下,每个Entity Bean对应于关系数据库中的单张表,Entity Bean的单个实例对应于表中的某一条数据。上篇文章中说的Session Bean可作为Entity
Bean的客户端,通过把数据库中的数据对象化,使得Session Bean对数据的处理变得很容易、很便捷。

其实细细说来,EJB中的Entity Bean具有很强大的功能特性。首先,Entity Bean具有持久性的特点。所谓持久性,就是指其生命周期会超过应用、JEE服务器进程。在应用程序结束或服务器终止的情况下,Entity Bean的状态仍然可以被保留。这是EJB Entity Bean很强大的一个地方,因为Entity
Bean的状态保存着存储设备中,所以它会具有这样的持久性。

Entity Bean就代表永久保存的资料,所谓永久保存就是讲数据存储与资料库、档案系统或其他永续类型存储媒体。根据永久保存方式的不同,分为BMP(Bean-Managed-Persistence 组件管理持久性)和CMP(Container-Managed-Persistence 容器管理持久性)两种。

虽然区分为两种形式,但是它们所实现的目的是相同的,都在于提供数据。但是这二者还存在差别,就是在于它们维护数据的角色不同。其中,BMP是由Bean自行维护数据的一致性,而CMP是有EJB容器来维护的。在BMP方式下,需要这类Bean的程序设计人员通过撰写代码来获取数据。EJB容器只会通知BMP何时可以安全的在数据库中增删改查数据,除此之外不会给予其他的协助。而在CMP方式下,CMP内并没有与数据存储有关的代码,具体的相关细节我们不再深究,只要大致知道这些就可以了。

不仅如此,Entity Bean还具有共享访问的特点。就是多个不同的客户可以共享同一个Entity Bean,这是因为EJB容器允许在用户需要的时候初识多个相同的Bean,并且每个Bean实例的数据都是一样的。但是这样又存在一个问题,就是多个客户共享同一个Entity Bean的时候,可能会造成多个客户端同时去修改,会造成数据不一致的情况。所以EJB支持了事务管理包括数据同步,避免了这种情况的发生。

EJB3.0的一个很大的特色就是能够通过注释的对象或关系来映射实体Bean。例如通过@Entity来表示这个类是实体Bean;通过@Id表示这个Bean的主键等等。这类资料网上特别多,我这里就不一一赘述,需要的可以去网上查,几个常用的知道怎么用就可以了。

今天这篇关于Entity Bean的文章就介绍到这里。都是理论性的东西,具体还要在实践中去验证。下篇文章我们介绍最后一个Bean,敬请期待!

时间: 2024-10-14 09:18:37

【进阶EJB】深入探讨三种Bean(二)——Entity Bean的相关文章

【进阶EJB】深入探讨三种Bean(三)——MessageDriven Bean

通过前两篇文文章 [进阶EJB]深入探讨三种Bean(一)--Session Bean [进阶EJB]深入探讨三种Bean(二)--Entity Bean 已经介绍了前两种Bean,今天我们继续介绍第三种Bean--MessageDriven Bean. 要说MessageDriven Bean前就先要介绍一下JMS(Java Message Service),JMS是Java消息服务,它是一个与具体平台无关的API(Application Program Interface 应用程序接口),是

【进阶EJB】深入探讨三种Bean(一)——Session Bean

接着,我们继续EJB的学习.经过前两篇博客的介绍,我想大家已经对EJB有了一个初步的认识.但是大家想过没有,我们为什么要用EJB呢? why EJB? 其中一个很重要的原因就是分布式!所谓分布式,就是分布式对象之间相互协作,完成特定的业务功能.通俗一点来说,就是我们不是把事情交给一个人去做,而是把事情划分一下,交给多个人去处理,最后把多个人处理的结果综合在一起得到最终的结果.与此同时,分布式对象之间能够实现分布透明性,亦或是位置透明性,即在客户端代码中无需指定分布式对象的位置:而且分布式对象之间

Django框架进阶6 多对多三种创建方式, Ajax, Content-Type前后端传输数据编码格式, Ajax发送文件数据, django内置的序列化功能, Ajax结合sweetalert实现删除二次确认, 批量插入数据, 自定义分页器, ajax结合sweetalert实现删除二次确认

多对多三种创建方式 1.全自动(较为常用) class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author') # orm就会自动帮你创建第三张表 class Author(models.Model): name = models.CharField(max_length=32) ''' 好处:第三张表自己创建 不足之处:第三张表无法扩展额外

.NET进阶 — Nhibernate 持久化的三种状态

引入 在面向对象的开发中,程序的运行都是通过对象的方式对数据库进行增删改查的操作,必然在持久化过程中产生一些列的对象,比如登陆,必然会有实例化的UserEntity对象,从数据库Select出来的对象,Save到数据库的对象,如何区分这些对象以及当前会话的状态,下面看NHibernate中的对象状态的管理: Nhibernate 三态 Nhibernate在持久化对象的生命周期,将对象分为三个状态: 1.瞬时态(Transient) 也叫临时态,顾名思义,对象是临时创建的,即刚实例化的对象: U

Spring三 Bean的三种创建方式

创建Bean的三种方式在大多数情况下,Spring容器直接通过new关键字调用构造器来创建Bean实例,而class属性指定Bean实例的实现类,但这不是实例化Bean的唯一方法.实际上,Spring支持使用以下三种方式来创建Bean:(1)调用构造器创建Bean(2)调用静态工厂方法创建Bean(3)调用实例工厂方法创建Bean一 构造器创建Bean实例如果不采用构造注入,Spring底层会调用Bean类的无参数构造器来创建实例,因此该类必须要提供无参数的构造器,并且class属性的值就是该B

Spring实现初始化和销毁bean之前进行的操作,三种方式

关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二种是:通过 在xml中定义init-method 和  destory-method方法 第三种是:通过bean实现InitializingBean和 DisposableBean接口 下面演示通过  @PostConstruct 和 @PreDestory 1:定义相关的实现类: [java] v

Spring提供的三种装配Bean方式

在Spring中,对象不需要自己查找或创建与其所关联的其他对象,Spring容器负责把需要相互协作的对象引用赋予各个对象.创建应用对象之间协作关系的行为通常称为装配(wiring),这也是依赖注入(DI)的本质. Spring提供了三种主要的装配Bean的方式: 隐式的bean发现和自动化装配 在Java中进行显示配置 在XML中进行显示配置 隐式的bean发现和自动化装配 Spring从两个方面来实现自动化装配: 组件扫描:Spring会自动发现应用上下文中所创建的bean. 自动装配:Spr

【进阶EJB】问你EJB知多少?

EJB是Enterprice Java Beans的简称,即企业Java组件,是一个用于分布式业务应用标准服务端组件模型(这里强调是服务端组件模型,后面我们将会说一下为什么是服务端而不是客户端),是一组用java语言编写的包含字段和方法的代码体,而这些代码的核心任务就是实现纯粹的业务逻辑. 采用Enterprice Java Beans架构编写的应用是可伸的.事务性的.多用户安全的,可以一次编写这些应用,然后部署在任何支持Enterprice Java Beans规范的服务器平台,如JBoss.

hibernate的三种状态(儿)

第五讲:hibernate的三种状态 瞬时:bean对象与session,与数据库无关.在session对象的save方法保存之前. 持久状态(托管):bean对象与session有关,数据库中有对应的记录.在save的保存方法之后,在session对象的关变之前.Session知道对象的变化,此时对象的变化即使在session保存对象之后session也可以把数据的变化保存在数据库中.(s.save--àstr.commit-----s.close) 在这个过程中对象变化的话即为更新updda