与容器管理的持久性 Bean 相关的技术
WebSphere® Application Server 提供了容器管理的持久性 (CMP) 服务,该服务超出 Enterprise JavaBeans (EJB) 规范所设置的标准。
- 实体 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 天。
注:因为前一个事务可以装入实体 Bean 使用的数据,所以如果您将 Bean 配置为 LifeTimeInCache,那么当前事务会丢失 Bean 的隔离级别和更新锁定(访问意向策略)。如果您的应用程序具有从只读数据计算信息,然后将结果保存到另一个 Bean 的逻辑,那么会导致数据完整性问题。这使得如果装入内存高速缓存中的数据,那么执行只读一致性检查以确保正确锁定数据变得很重要;否则,在不知道基本数据已被更改的情况下对数据库更新数据会导致丢失先前的更改。有关更多信息,请参阅主题“使用组装工具配置读读一致性检查”。
- 只读实体 bean
- 将实体 Bean 声明为只读可能增强了高速缓存提供的性能增强。两个功能部件按同一原则运作:要将从持久存储中的数据频繁地重新装入实体 Bean 所用的开销减到最小。当您将实体 Bean 指定为只读时,可以根据应用程序的需要指定重新装入的需求和频率。
要使用此功能,通过组装工具内的选择列表,选择特定的一组 Bean 高速缓存选项将 Bean 类型声明为只读。请参阅“使用组装工具配置读读一致性检查”以了解详细信息。