创建 CMP 1.x 的关系

CMP 1.x 的关系对于 EJB 1.x 规范来说不是标准的。创建了 WebSphere® Application Server 扩展以处理 1.x 关系。

使用 EJB 部署描述符编辑器来指定 EJB 项目或模块中的两个企业 bean 之间的关系。EJB 部署描述符编辑器生成相应的 finder 方法以支持您创建的所有关系。

当定义一个 CMP 与另一个 CMP 的关系时,基于引用 CMP bean 的键字段的额外 CMP 字段就会添加到前向引用角色的拥有 CMP bean 中(在拥有 CMP bean 上选择了“外键”复选框)。

例如,分别通过公司角色和职员角色来使“公司”与“职员”之间具有 1..N 关系。 公司角色是“前向”角色,“公司”CMP bean 具有称为“companyID”和“companyName”的键字段。 自动添加到“职员”bean 中的 CMP 字段是“company_companyID”和“company_companyName”。在 EJB 编辑器中,这些字段是隐藏的,原因是添加这些字段是为了支持“职员”关系角色。 如果当关系仍然存在时从 ejb-jar.xml 文件中除去这些 CMP 字段,则将产生问题。

在随 Rational® Application Developer 一起提供的 AutoWorld 示例项目中可以看到更多关系示例。下图显示“车库 - 车辆”关系在 EJB 部署描述符编辑器的“关系”页面上的出现方式。多个“车辆”可处于一个“车库”中,因此,多重性指示一个“多”(0..*)对 1(0..1)关系。


“添加关系”向导的屏幕捕捉。

创建向导将显示关系的 UML 视图,并且将根据 UML 模型修改字段。当创建关系后,就会创建其它类,以支持维护这两个 bean 之间的链接所需要的运行时。另外,在两个企业 bean 的 Home、远程和 Bean 类中将生成其它方法。当首次创建关系时,在 EJB 部署描述符编辑器中将看到编译错误,原因是需要对生成的“链接”类进行编译。在这些文件中将看到实际的代码,但是尚未编译在“Home 对象”、“远程对象”和 Bean 类中所作的更改。在构建项目之前将不会发生此情况;在保存 EJB 部署描述符编辑器时,通常会自动发生此情况。因此,在保存编辑器之前,将看不到编译错误。

注: 如果在一个或多个 CMP bean 之间存在关系,则更改一个 CMP 的键形状可能会导致重新生成相关的 CMP。

要创建两个企业 bean(CMP 1.x)之间的关系:

  1. 切换至 J2EE 透视图。
  2. 在“项目资源管理器”视图中选择期望的 EJB 模块。
  3. 右键单击部署描述符编辑器,并从弹出菜单中选择打开方式
  4. 在编辑器的“概述”页面上,选择“关系”部分。
  5. 单击添加。“添加关系”向导出现。
  6. 从 Bean A 列表(左列)中选择一个企业 bean。
  7. 从 Bean B 列表(右列)中选择一个企业 bean。“关系”名称字段是根据所选企业 bean 的名称自动创建的。但是,可以编辑此字段来重命名关系。
  8. 单击下一步
  9. 缺省情况下,“角色”名是自动生成的,但可以修改它。
  10. 设置每个角色的参数。从下列选项中进行选择:
    • 可浏览意味着可使用此角色来检索关联中的其它 bean 的实例。
    • 多重性意味着角色潜在地表示其它 bean 的许多实例。通过使用 1..x 来使角色是必需的。
    • 外键意味着关系的指定企业 bean 拥有其它关系角色的外键。
  11. 单击完成
注: 为了支持 CMP 1.x 关系,会创建 Link 类。这些 Link 类需要 Bean 主键类的知识。如果更改 CMP 1.x 的各个关系中涉及的主键类,则生成的 Link 类将仍然包含对以前主键类的引用。变通方法是手工更新 Link 类。应该只有两处需要进行更改。
使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.