可以使用“创建企业 Bean”向导来创建 CMP
实体 bean。
要创建具有容器管理的持久性(CMP)的实体 bean:
- 在 J2EE 透视图中,单击。“创建企业 Bean”向导出现。
- 选择具有容器管理的持久性(CMP)字段的实体 bean 单选按钮。
- 选择想要向其添加 bean 的
EJB 项目。
- 在 Bean 名称字段中,输入要指定给企业 bean 的名称。根据约定,bean 名称应以大写字母开头。
注: 您可以使用 Unicode 字符来作为 bean 名称,但是与企业 bean 相关联的企业 bean 包和类不支持 Unicode 字符。
- 在源文件夹字段中,为新的 bean 选择源文件夹。
- 在缺省包字段中,为新的 bean 输入包名称。
- 如果要将 bean 添加到 EJB 2.0 或更新的项目,请在 CMP 版本下拉列表中,为新的实体 bean 选择要使用的 EJB 规范级别。
- 可选: 对于 EJB 2.x bean,可以选择生成有注释的 bean 类。 如果选择此选项,则向导会在 bean 类的 Java™ 代码开头生成注释。
注释根据向导中所指定的内容定义 bean 的实现。然后,EJB 工具使用这些注释生成必要的 bean 类,并提供插入 EJB 部署描述符(ejb-jar.xml)的值。如果您熟悉注释,且要使用注释而不是部署描述符来更新 bean,请选择此选项。
有关更多信息,请参阅基于注释的编程概述。
- 单击下一步。
- 如果想要新 bean 继承同一 EJB 项目中相同类型的现有 bean,请在 Bean 超类型下拉列表中选择一个 bean。
- 在 Bean 类字段中,为 bean 类输入所需的包和类名。 缺省情况下,向导根据您定义的 bean 名称和缺省包来建议 bean 类。bean 类可以是向导生成的新类,也可以是项目类路径中的现有类。单击类按钮以打开一个对话框,该对话框列示了项目中与 bean 类型相对应的类。对于带有源代码的现有类,bean 类的名称显示为蓝色。对于现有二进制类,bean 类的名称显示为红色。
- 定义客户机视图和接口。对于 EJB 2.0 或更新的 bean,可以包括远程客户机视图和/或本地客户机视图。对于 EJB 1.1 bean,仅支持远程客户机视图。每个会话 bean 或实体 bean 都必须至少具有一个客户机视图:
- 定义实体 bean 的 CMP 属性:
- 单击添加按钮。
- 指定属性的名称和类型。
- 选择键字段,以便使属性成为实体 bean 的键字段。
- 可以根据新的 bean 中的客户机视图,选择将属性的 getter 和 setter 方法提升到远程和本地接口。
- 单击应用以创建属性。完成定义属性后单击关闭。
缺省情况下,向导指定以下 CMP 属性,并且将其声明为键字段:- Name:id
- Type:java.lang.Integer
可以编辑或除去此属性。注: 如果 bean
不是继承的,则需要键。如果未定义键,则 bean 将具有验证错误。创建 bean 后,可使用部署描述符编辑器来添加键属性或使现有的属性成为键。
- 在键类字段中,为 bean 的键类输入包和类名。缺省情况下,使用键类的单个键属性类型复选框处于选中状态,且键 CMP 属性的类型用作键类。如果具有类型为有效的 primkey-field(例如 java.lang.Integer)的单个键属性,则可以使用此选项。如果包括多个键属性,则会创建新的复合键类。
- 单击下一步。
- 可选: 在 Bean 超类字段中,输入或选择期望的类。如果指定了 bean 超类型,则会禁用此字段。
- 可选: 定义希望远程或本地客户机接口扩展的任何接口:
- 单击添加按钮以打开“类型选择”对话框,可在其中选择要扩展的接口。
- 如果添加了不再希望进行扩展的接口,则在列表中选择该接口,然后单击除去。
- 单击完成。 新的实体 bean 会添加到指定的 EJB 项目。
限制: 当设置继承的 CMP 实体 bean 时,子 bean
的 CMP 属性的名称不能与定义于其祖先链中任何位置的属性名称相同。例如,父代是包含类型为 int
的属性标识的 CMP 实体 bean。如果使用向导创建一个 CMP bean(它称为“子代”并指定“父代”作为其超级类型)并且尝试添加类型为 int 的属性标识,则不会添加该标识属性,原因是它将继承“父代”的标识属性。如果
Child2(另一个无关的 CMP Bean)包含了类型为 java.lang.String
的属性标识,且通过“部署描述符编辑器”更改了其继承结构以从“父代”继承,则将除去
Child2 的类型为 java.lang.String 的标识属性,原因是它将继承“父代”的标识属性,且由于类型冲突可能有验证错误。