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 部署描述符编辑器时,通常会自动发生此情况。因此,在保存编辑器之前,将看不到编译错误。
要创建两个企业 bean(CMP 1.x)之间的关系: