通过上一篇文章,我们介绍了【进阶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,敬请期待!