访问意向服务
访问意向是应用程序服务器运行时服务,它使您可以精确地管理应用程序的持久性。
访问意向服务定义了一组声明性的注释,Enterprise JavaBeans (EJB) 容器及其代理程序使用这种注释优化实体 Bean 的访问性能。这些注释被组织到称为访问意向的集合中。
访问意向策略包含一组由 EJB 容器及其代理程序当作提示的注释。大多数访问意向策略是表示高级抽象的提示,可以被映射至特定后端资源管理器。执行持久性细节时,确保必需的并行控制、连接和高速缓存管理是 EJB 持久性管理器的职责。EJB 持久性管理器执行指定任务时,可以使用访问意向提示作出较好的性能决策。少数访问意向是 EJB 容器提示,影响 EJB 集合管理。
通常,为应用程序配置 Bean 级别访问意向。 还可在应用程序概要文件的作用域中对 Bean 应用访问意向策略。从而,您可以用多个相反的访问意向策略来配置 Bean。应用程序概要分析文档更详细地解释了如何配置应用程序以将特定的访问意向策略为一个请求应用到 Bean,然后为另一个请求将另一个访问意向策略应用相同的 Bean。
不推荐在 WebSphere® Application Server V6.0 中使用对在方法级别应用访问意向策略的支持。在配置访问意向的实践中,在 EJB 模块的作用域中对方法应用某个策略,以便该策略成为针对这些方法的所有请求的缺省访问意向。
访问意向设计注意事项

即使可在实体 Bean 的任何方法上配置访问意向策略,但策略的某些属性只能由运行时环境在特定条件下使用。例如,仅当驱动 ejbLoad 方法以打开连接并从给定的资源读取数据时,才会将并行和访问意向用于 CMP 实体 Bean;该数据将在调用 ejbStore 方法期间高速缓存并用于驱动适当的查询。仅在执行 Bean 的 finder 方法期间使用预读提示。集合增量和资源管理器预取增量仅用于多对象 finder。在不使用策略的方法上配置策略不算错误。即便策略适当地应用于方法,也只使用任何策略的某些属性。然而,在整个应用程序中配置不必要的策略,将使应用程序设计混乱,应用程序维护复杂。
具有 BMP 实体 Bean 的访问意向
声明访问意向的功能极大地增强了您(CMP 实体 Bean 开发者)的开发能力。可以提供有关产品应如何管理持久性的详细信息的提示,而无需显式管理应用程序中的任何持久性逻辑。然而在某些情况下,您需要开发 BMP 实体 Bean。由于 BMP 和 CMP 组件之间有意义的唯一区别是提供持久性逻辑的对象不同,所以 BMP 实体 Bean 应该可以像代表 CMP 实体 Bean 的产品那样利用访问意向提示。使用访问意向服务的 BMP 实体 Bean 参与应用程序概要分析;即,访问意向属性的值可以随请求的不同而不同,允许 BMP 实体 Bean 无缝修改其持久性策略。
您可以将访问意向应用到 BMP 实体 Bean 方法以及 CMP 实体 Bean 方法。本质上,并非一定要有访问意向提示,所以 BMP 实体 Bean 不一定要开发它们。期待 BMP 实体 Bean 仅使用那些对该特定 Bean 是重要的访问意向属性。
当前访问意向策略绑定到特定 BMP 实体 Bean 的 java:comp namespace 中。该策略仅在取得访问意向策略的方法调用持续时间内是当前策略。在典型情况中,您应该在 ejbLoad 方法调用期间高速缓存访问类型,以便可以在调用 ejbStore 方法的期间采取适当的操作。
访问意向最佳实践
将访问意向策略应用于 EJB 方法时,请考虑以下问题。
- 首先是配置一个实体的缺省访问意向策略。 在构建和启动应用程序之后,可以使用应用程序概要分析或方法级别访问意向来对应用程序中的某些访问路径进行微调。
- 请勿混用访问类型。避免在相同事务中同时使用悲观策略和乐观策略。对于大多数数据库,悲观策略和乐观策略使用不同的隔离级别。这将导致产生多个数据库连接,从而防碍您通过连接共享获得更佳的性能利益。
- 应用 wsPessimisticUpdate-NoCollision 策略时,请谨慎。 该策略不确保数据完整性。因为没有保留数据库锁定,所以并发事务可以相互覆盖更新。仅当您可以确定任何时候只有一个事务尝试更新持久性存储的情况下,才能使用该策略。
有关 Java Persistence API (JPA) 访问意向的更多信息,请参阅有关 JPA 访问意向的主题。