EJB 部署描述符编辑器可以帮助您定义企业 bean 之间的继承关系。
可以使用工具来定义下列两种形式的继承:
在标准类继承中,home 接口、远程接口或企业 bean
类将从自己不是企业 bean 类或接口的基类继承属性和方法。将使用企业 bean 向导的超类字段来指定 bean 超类。
而在 EJB 继承中,企业 bean 继承驻留在同一 EJB 模块中的另一个企业 bean 中的属性
(例如,CMP 字段和关系角色)、方法和方法级别的装配描述符属性。为了帮助您定义 EJB 继承关系,“新建企业 bean”向导允许您创建从现有企业 bean 继承的新企业 bean。EJB 编辑器允许您更改现有企业 bean 的继承结构,这将更新生成的 Java™ 代码。
此产品支持使用
EJB 编辑器的“继承”部分提供的向导来更改父代的几种其他方法:
- 将继承结构中的 bean 类(非根)移动到另一继承结构中(更改父代)。
- 将父代添加到当前不在继承结构中的现有 bean 类中。现在,继承的 bean 及其所有子类型将引用它的超类型的键类。继承的 bean 的键形状将更改,因此,其 bean 类的方法和远程信息可能会更改或者被除去。如果旧的键类不再被另一个 Java 类引用,则可以安全地将其删除。
- 从继承结构中除去 bean,以便使它成为根。必须指定键类。如果您选择让 EJB 工具创建一个键,它就会这样做。它将与 bean 先前的键具有相同属性,因此,类/bean 仍然有效。例如,假定您将
Employee 作为 PTEmployee 的父代。当您移出 PTEmployee 时,PTEmployeeKey 就可作为新的键类来创建。当单击确定时,工具将保留、反映并自动生成相同的字段。
EJB 继承的某些特征为:
- 对于 CMP 实体 bean,支持单个表和根叶表映射。然而,由于 SQL
语句的大小太大,大型层次结构(宽或深)可能执行得很少。由于 SQL
语句中所涉及的连接数,根叶映射对此问题更敏感。
- 部署描述符将列示每个企业
bean 的所有 CMP 字段(包括那些已继承的字段)。对超类型 EJB 定义的方法许可权和方法事务是为每个子类型企业
bean 创建的。对于 EJB 引用,情况也是这样。
- 当在企业 bean 之间定义了继承关系时,未作为关联的一部分的所有 home 方法都会被复制到子 bean 中。子 home
接口将不会扩展超类型企业 bean 的 home 接口以便具有针对子类型的特定 create 方法而不必支持超类型 create 方法。
- 新的子企业 bean 的 bean 类扩展父企业 bean 的 bean 类。不会在子 bean 类中定义任何父 bean 类方法。
- 本地接口和远程接口扩展超类型企业 bean 的远程接口。
- 键类是所有继承企业 bean 公用的。换句话说,子企业
bean 中的键类与父企业 bean 中的键类是完全相同的。
- 只能添加至根 bean 中的键。
“源代码”页和 EJB 继承
如果正在修改继承层次结构中的
CMP 实体 bean,则应该使用 EJB 部署描述符编辑器的向导和接口部分而不是“源代码”页。例如,如果想要添加或除去 CMP
字段或更改 CMP bean 的主键字段,则这些字段将由所有继承 bean 的工具同步以使这些 bean 与 EJB
规范一致。如果在“源代码”页中更改源代码,则可能不会发生这样的同步。