预读方案提示

预读方案使应用程序可以在事务中只通过一次查询就能获取容器管理的持久性 (CMP) Bean 的工作集,从而将往返数据库的次数降到最少。预读涉及激活已请求的 CMP Bean 和高速缓存其相关 Bean 的数据,这将确保为应用程序接下来最有可能需要的 Bean 提供数据。预读提示是要读取的相关 Bean 的表示。该提示与请求的 Bean 类型的 findByPrimaryKey 方法有关。该 Bean 必须是符合 EJB 2.x 的 CMP 实体 Bean。

预读提示采取字符串形式。您不必提供字符串;向导将根据为该 Bean 定义的容器管理的关系 (CMR) 生成该字符串。此部分中提供的示例仅用作补充信息。假设类型 A 的 CMP Bean 有一个 finder 方法返回 Bean A 的实例。将使用以下表示法指定此方法的预读提示:RelB.RelC; RelD

下面解释前面的表示法:
  • 类型 A 的 Bean 与类型 B 和类型 D 的 Bean 有 CMR。
  • 类型 B 的 Bean 与类型 C 的 Bean 有 CMR。

从数据库检索类型 A 的每个 Bean 时,还会获取与此每个 Bean 直接相关的 B Bean 和 D Bean,以及间接相关的 C Bean。检索到的 Bean 数据列在结果集的每一行中的顺序与在预读提示中的顺序相同:A Bean,B Bean(或空),C Bean(或空),D Bean(或空)。对于多次提到相同关系(例如 RelB.RelC;RelB.RelE)的提示,Bean 的数据列仅在结果集中出现一次,即 Bean 首次出现在提示中的位置。

注释中显示的标记(如 RelB)必须是关系的 CMR 字段名,就像该 Bean 的部署描述符中定义的那样。 在间接关系(如 RelB.RelC)中,RelC 是在 Bean 类型 B 的部署描述符中定义的 CMR 字段名。

单个预读提示不能在多个关系中引用相同的 Bean 类型。例如,如果部门 Bean 与职员 Bean 有职员关系,并且还与职员 Bean 有经理关系,那么预读提示不能同时指定职员经理

有关如何设置预读提示的更多信息,请参阅 Rational® Application Developer 产品的文档。

预读提示的运行时行为

在开发预读提示时,请考虑下列技巧和局限性:
  • 有关长路径或复杂路径的预读提示可能导致查询因太过复杂而变得无用。有关根或叶继承映射的预读提示需要特别小心。将可能组成预读预装入的表数目加起来,以了解必需的连接操作的复杂程度。考虑生成的语句在目标数据库上是否构成合理的查询。
  • 预读提示在下列情况下不起作用:
    • 预装入 M/N 关系中的路径
    • 预装入递归企业 Bean 关系或递归 FK 关系中的路径
    • 当对在数据库中需要表连接的 SELECT FOR UPDATE 语句应用预读提示时(该数据库不支持这两种操作的组合)。

      通常,仅当 Bean 具有强制实行严格锁定策略的访问意向时,持久性管理器才会对该 Bean 发出 SELECT FOR UPDATE 语句。严格锁定策略要求对数据库选择查询发出 SELECT FOR UPDATE 语句。如果数据库表设计要求使用连接操作来完成该语句,那么许多数据库会由于不支持使用 SELECT FOR UPDATE 语句来进行表连接而发出异常。在这类情况下,WebSphere® Application Server 不会实现预读提示。如果数据库提供该支持,那么应用程序服务器会实现您配置的预读提示。

      [AIX Solaris HP-UX Linux Windows][z/OS]DB2 Universal Database™ V8.2 支持对表连接使用 SELECT FOR UPDATE 语句。


指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cejb_read
文件名:cejb_read.html