EJB 关系

在 EJB 工具中,可以使用 EJB 部署描述符编辑器来有选择性地定义不同企业 bean 之间的关系。
要点: EJB 1.x 关系是 WebSphere® 扩展,而 EJB 2.x 关系是 EJB 2.x 部署描述符的一部分。对于这两个级别的关系,您可以从不同位置打开不同的向导。

有三种主要的关系类型:

在“一对一”(1:1)关系中,CMP 实体 bean 与另一个 CMP 实体 bean 的单个实例相关联。例如,职员 bean 只能与单个职员标识 bean 实例相关联,因为一个职员在文件中只能有一个职员标识。

在“一对多”(1:M)关系中,CMP 实体 bean 与另一个 CMP 实体 bean 的多个实例相关联。例如,由于大多数部门是由多个职员组成,所以部门 bean 可以与职员 bean 的多个实例相关联。

在“多对多”(M:M)关系中,CMP 实体 bean 的多个实例与另一个 CMP 实体 bean 的多个实例相关联。例如,客户 bean 的多个实例可以与酒店 bean 的多个实例相关联,因为酒店可以为许多客户服务,而客户可以光顾许多不同的酒店。对于 EJB 1.1 CMP 实体 bean,多对多关系需要使用链接 bean。通过创建从每个企业 bean 至此链接 bean 的一对多关系将链接 bean 放置在这两个企业 bean 的中间。对于 EJB 2.0 CMP bean,因为在执行自顶向下映射期间,将自动处理链接表的创建,所以不需要创建链接 bean。

作为定义关系的一部分,为与其他 bean 相关的每个 bean 指定一个角色,并为该角色命名。例如,假设您创建了“职员”与“职员标识”之间的关系。职员 bean 中的“职员标识”角色可以是诸如标识职员标识之类有意义的内容。职员标识 bean 中的“职员”角色可以是诸如职员所有者等内容。这些名称用来在生成的代码中派生方法名并成为企业 bean 的远程接口的一部分。

对于 EJB 2.x 关系,cmr 字段元素用于生成方法。

当 CMP 字段和关系最终映射至数据库表时,在数据库表中使用外键来表示这些关系。然后,可以将关系角色添加到企业 bean 的键中,这使得在键类的关系部分表示外键。

为了将角色添加到 bean 的键中,它必须是单一多重性关系且此关系是必需的(例如 1..1)。而且,角色拥有的 bean 必须已选中“外键”复选框。除了多重性将为 1 之外,上述规则对于 EJB 2.x CMP 实体 bean 是相同的,这是因为无需测试是否满足下限要求。注意,外键复选框用于指定应包含外键列的 CMP 实体 bean 的映射表。该 CMP 实体 bean 是角色的源企业 bean。

在以上示例中,如果多重性是 1..1,并且“职员”已选中“外键”复选框,“职员标识”角色可以是“职员”键的一部分。而且,根据需要来标记角色时(例如,1..x),会将角色的类型作为参数添加到 Home 接口的 create 方法中。在 EJB 2.x 关系中,如果已选中“可浏览”复选框,则需要 cmr 字段。您将只能对具有本地客户机视图的 CMP 选择可浏览。仅可以为相同 EJB 版本的 CMP 实体 bean 定义关系。您不能在 EJB 1.x CMP 实体 bean 和 EJB 2.x CMP 实体 bean 之间创建关系。

EJB 2.x 关系创建向导将显示关系的 UML 视图和规范视图。注意,规范视图中所描述的多重性与 EJB 规范中的规则相对应。对于 UML 视图则相反,因为角色的多重性是相对于关系的,而在 UML 视图中,它是相对于源企业 bean。

相关任务
定义 bean 关系
创建 EJB 2.x bean 的关系

反馈