与容器管理的持久性 Bean 相关的技术

WebSphere® Application Server 提供超出 Enterprise JavaBeans (EJB) 规范设置的标准的容器管理的持久性 (CMP) 服务。

根据规范,EJB 容器使 CMP Bean 的状态与底层数据库同步,并管理实体 Bean 之间的关系(容器管理的关系或 CMR)。 因此,EJB 规范使 Bean 开发者不必编写任何特定于数据库的代码;开发者可以集中精力编写业务逻辑。 WebSphere Application Server 提供了以下额外的 CMP 功能,以进一步提高开发效率,并优化业务逻辑的运行时性能:
实体 Bean 继承
继承是面向对象的软件开发的主要方面,并且是 EJB 规范中当前缺少的功能。

使用继承允许开发者在一个超类实体 Bean 中定义由所有子类继承的字段、关系和业务逻辑。 请参阅 Rational® Application Developer 文档的 EJB 继承 部分,以获取有关将继承与 WebSphere Application Server 和实体 Bean 配合使用的详细信息。

访问意向策略
访问意向策略为 Java™ Platform, Enterprise Edition (Java EE) 应用程序开发者提供了一种机制,通过该机制,他们可以指示应用程序与实体 Bean 的基本状态交互的意向,以便持久性机制可以进行相应的优化。 例如,如果已知一个实体未在事务进程期间更新,那么持久性管理可以轻松地并行控制,且仍通过不允许在事务持续期间对该 Bean 进行更新操作来维护数据完整性。
跨事务进行数据高速缓存
跨事务进行数据高速缓存是一个 Bean 部署程序设置的可配置选项,该部署程序可以大大地改进性能。 从本质上来说,这是针对极少改变的数据的。 此选项称为 LifetimeInCache。 高速缓存中配置生存期的实体的数据在其指定生存期到期之前存储在高速缓存中。 在配置的生存期期间实体的请求使用高速缓存数据,且不会导致执行相对于基本数据存储的查询。 生存期可以用自从数据存储中检索数据以来或在天或周的特定时间之前已消逝的时间表示。 LifetimeInCache 值可以是以下某个值:
关闭
忽略 LifetimeInCache 设置。 仅在事务作用域的高速缓存中高速缓存此类 bean。 当完成事务时,此实例的已高速缓存的数据无效。
ElapsedTime
当完成事务(bean 实例是在此事务中获取的)时,将 LifetimeInCache 设置的值添加到当前时间。 此时间后,该实例的已高速缓存的数据无效。 可以将 LifetimeInCache 设置的值添加成分钟、小时、天等。
ClockTime
LifetimeInCache 的值表示一天中的某个特定时间。 将此值增加到即在午夜之前或之后来计算未来的时间值,然后将此时间值视为耗用时间。 使用此设置使您能够在特定时间,将此 Bean 类型的所有实例的已高速缓存的数据指定为无效,而不管是何时检索到这些数据的。

使用午夜之前或之后计算未来的时间值取决于 LifetimeInCache 的值。 如果 LifetimeInCache 加上比当前时间早的午夜之前的值,那么使用午夜之后的值。

当您使用 ClockTime 设置时,LifetimeInCache 的值不能表示超过 24 小时。 如果该值大于 24 小时,那么高速缓存管理器从中减去 24 小时增量,直到得到一个小于或等于 24 小时的值。 对于午夜 12 点的无效数据,将 LifetimeInCache 设置为零 (0)。

WeekTime
此设置与 ClockTime 类似,除了将 LifetimeInCache 的值添加到星期天的午夜之前或之后(事实上是星期六下午 11:59 加上 1 分钟)。 在此情况下,LifetimeInCache 值可以表示大于 24 小时,但是不能大于 7 天。
请参阅组装工具的 LifetimeInCache 帮助部分以获取更多详细信息。
注:

因为前一个事务可以装入实体 Bean 使用的数据,所以如果您将 Bean 配置为 LifeTimeInCache,那么当前事务会丢失 Bean 的隔离级别和更新锁定(访问意向策略)。 如果您的应用程序具有从只读数据计算信息,然后将结果保存到另一个 Bean 的逻辑,那么会导致数据完整性问题。 这使得如果装入内存高速缓存中的数据,那么执行只读一致性检查以确保正确锁定数据变得很重要;否则,在不知道基本数据已被更改的情况下对数据库更新数据会导致丢失先前的更改。 有关更多信息,请参阅主题“使用组装工具配置读读一致性检查”。

只读实体 bean
将实体 Bean 声明为只读可能增强了高速缓存提供的性能增强。 两个功能部件按同一原则运作:要将从持久存储中的数据频繁地重新装入实体 Bean 所用的开销减到最小。 当您将实体 Bean 指定为只读时,可以根据应用程序的需要指定重新装入的需求和频率。

要使用此功能,通过组装工具内的选择列表,选择特定的一组 Bean 高速缓存选项将 Bean 类型声明为只读。 请参阅“使用组装工具配置读读一致性检查”以了解详细信息。