<<Entity>> 类

“UML 到 EJB”转换将标记有 <<Entity>> 构造型的类转换成具有与源 UML 类名相同的 Bean 名称的 CMP 2.x、CMP 1.1 或 BMP 实体 Bean。生成的实体 Bean 的类型对应于您在 EJB 转换配置窗口中的实体选项卡上选择的选项。

转换总是为实体 Bean 生成以下 Java 类:

 

实体选项卡上单击仅远程接口时,转换生成以下 Java 类:

 

实体选项卡上单击仅本地接口时,转换生成以下 Java 类:

 

实体选项卡上单击本地和远程接口时,转换生成以下 Java 类:

 

转换在为源 UML 类的父包生成的包文件夹中生成所有类。如果您在创建 UML 模型时没有包,转换就会生成名为 ejbs 的缺省包。

转换在目标 EJB 项目的源树中生成 Bean 类和键类文件。

转换在目标 EJB 项目的客户端项目的源树中生成 4 个接口文件。如果不存在客户端项目,则转换在目标 EJB 项目中生成接口文件。

转换将定义实体 Bean 的数据添加到部署描述符(ejb-jar.xml)中。

泛化关系

如果实体 Bean 的源 UML 类与具有构造型 <<Entity>> 的另一个 UML 类存在泛化关系(例如:扩展关系),则类表示的实体 Bean 成为要生成的实体 Bean 的 EJB 超类

这两个实体 Bean 必须具有相同的类型。因此,这两个实体 Bean 必须都是 CMP 2.x、CMP 1.1 或 BMP。例如:如果超级 Bean 是 CMP 2.x 实体 Bean,所有子代 Bean 就必须是 CMP 2.x 实体 Bean。如果超级 Bean 的类型与期望的子代 Bean 的类型不同,转换就会生成子代 Bean,而不带泛化关系。

实现关系

如果实体 Bean 的源 UML 类与接口元素有实现关系(例如:实施关系),源接口所代表的接口则由 4 个接口进行实施(远程接口、主接口、本地接口和本地主接口)。

未标记属性 - CMP 2.x

转换将源 UML 类上的属性转换成实体 Bean 上的 CMP 字段,且具有下表所列的属性:

CMP 2.x 字段属性

CMP 字段值

名称

UML 属性名

类型

从属性类型确定的类型(请参阅“类型映射”表。)

关键字段

False

在 Bean 实施类中生成字段

False

生成 getter 方法和 setter 方法

True

将 getter 方法和 setter 方法提升为本地接口

True(如果本地接口存在)

将 getter 方法和 setter 方法提升为远程接口

True(如果远程接口存在)

IsArray

如果 UML 属性具有有限的上限值,则为 True

如果属性类型是另一个 CMP 2.x 实体 Bean 的属性类型,则转换不将属性转换为 CMP 字段,但假定此属性是应转换为 EJB 关系的关联的一部分。 但如果属性类型是另一个不是 CMP 2.x 实体 Bean 的企业 Bean 的属性类型,则转换不将属性转换为 CMP 字段或关联。而是转换将消息写入说明不转换源属性的日志文件中。

未标记属性 - CMP 1.1

转换将源 UML 类上的属性转换成实体 Bean 上的 CMP 字段,且具有下表所列的属性:

CMP 1.1 字段属性

CMP 字段值

名称

UML 属性名

类型

从属性类型确定的类型(请参阅“类型映射”表。)

关键字段

False

在 Bean 实施类中生成字段

False

生成 getter 方法和 setter 方法

True

将 getter 方法和 setter 方法提升为本地接口

False

将 getter 方法和 setter 方法提升为远程接口

True(始终)

IsArray

如果 UML 属性具有有限的上限值,则为 True

如果属性类型是另一个实体 Bean 或企业 Bean 的属性类型,则转换不将属性转换成 CMP 字段或关联。 而是转换将消息写入说明不转换源属性的日志文件中。

未标记属性 - BMP

转换将源 UML 类上的属性转换成实体 Bean 上的 BMP 字段,且具有下表所列的属性:

BMP 字段属性

BMP 字段值

名称

UML 属性名

类型

从属性类型确定的类型(请参阅“类型映射”表。)

关键字段

False

在 Bean 实施类中生成字段

True

生成 getter 方法和 setter 方法

True

将 getter 方法和 setter 方法提升为本地接口

True(如果本地接口存在)

将 getter 方法和 setter 方法提升为远程接口

True(如果远程接口存在)

IsArray

如果 UML 属性具有有限的上限值,则为 True

如果属性类型是另一个实体 Bean 或 EJB 的属性类型,则转换不将属性转换成 BMP 字段或关联。 而是转换将消息写入说明不转换源属性的日志文件中。

<<Id>> 属性 - CMP 2.x 和 CMP 1.1

转换也将标记有 <<Id>> 属性的源 UML 类上的属性转换成 CMP 字段,但属性值不同,如下表所列出的那样。这些 CMP 字段帮助形成主键。

CMP 2.x 和 CMP 1.1 字段属性

CMP 字段值

名称

UML 属性名

类型

从属性类型确定的类型(请参阅“类型映射”表。)

关键字段

True

在 Bean 实施类中生成字段

False

生成 getter 方法和 setter 方法

True

将 getter 方法和 setter 方法提升为本地接口

False

将 getter 方法和 setter 方法提升为远程接口

False

IsArray

如果 UML 属性具有有限的上限值,则为 True

如果属性类型是另一个实体 Bean 或企业 Bean 的属性类型,则转换不将属性转换成 CMP 关键字段或关联。 而是转换将消息写入说明不转换源属性的日志文件中。

<<Id>> 属性 - BMP

转换也将标记有 <<Id>> 的源 UML 类上的属性转换成 BMP 字段,但属性值不同,如下表所列出的那样。这些 BMP 字段帮助形成主键。

BMP 字段属性

BMP 字段值

名称

UML 属性名

类型

从属性类型确定的类型(请参阅“类型映射”表。)

关键字段

True

在 Bean 实施类中生成字段

True

生成 getter 方法和 setter 方法

True

将 getter 方法和 setter 方法提升为本地接口

False

将 getter 方法和 setter 方法提升为远程接口

False

IsArray

如果 UML 属性具有有限的上限值,则为 True

如果属性类型是另一个实体 Bean 或企业 Bean 的属性类型,则转换不将属性转换成 BMP 关键字段或关联。 而是转换将消息写入说明不转换源属性的日志文件中。

CMP 和 BMP 字段类型映射

如下表所说明的,转换基于源属性类型生成具有相应类型的 CMP 和 BMP 字段:

UML 属性类型

CMP/BMP 字段类型

布尔型

布尔型

字节

字节

字符型

字符型

浮点型

浮点型

整型

整型

长整型

长整型

短整型

短整型

布尔型

java.lang.Boolean

字节

java.lang.Byte

字符型

java.lang.Char

浮点型

java.lang.Float

整型

java.lang.Integer

长整型

java.lang.Long

短整型

java.lang.Short

字符串

java.lang.String

其他

标准名称

 

未标记的操作

转换将源 UML 类上的未标记的操作转换成实体 Bean 上的业务方法。最初,转换该操作与转换未标记 UML 类上的操作相同。经过某些修改的已转换操作被添加到下表列出的类中。

方法修改

Bean 类

无更改

本地接口

接口方法

远程接口

接口方法,抛出 java.rmi.RemoteException

 

<<Query>> 操作 - CMP 2.x

转换将源 UML 类上的 <<Query>> 操作转换成以下两种查询方法之一:finder 方法和 select 方法。select 方法仅存在于 CMP 2.x 实体 Bean 中。

转换加以某些修改后,在下表中列出的类中生成 finder 方法:

方法修改

本地主接口

(如果本地接口存在)

  • findXxx 的名称(请参阅“Finder 名称”表。)
  • 抛出 javax.ejb.FinderException
  • 返回类型(请参阅“Finder 返回类型”表。)

远程主接口

(如果远程接口存在)

  • findXxx 的名称(请参阅“Finder 名称”表。)
  • 抛出 javax.ejb.FinderException
  • 抛出 java.rmi.RemoteException
  • 返回类型(请参阅“Finder 返回类型”表。)

 

Finder 名称

UML 操作名称

finder 方法名

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

主接口 finder 返回类型

Java 转换分析的返回类型

finder 方法返回类型

集合

java.util.Collection

java.util.Set

列表

java.util.Collection

排序列表

java.util.Set

<源类名>[]

java.util.Collection

<源类名>或“void”

  • 本地接口名称
  • 远程接口名称

<用户定义的类型名称>[]

java.util.Collection

<非源类名(例如:字符串、整型等)>[]

java.util.Collection

<用户定义的类型名称>

生成 select 方法而不是 finder 方法

<非源类名(例如:字符串、整型等)>

生成 select 方法而不是 finder 方法

 

EJB 转换创建一个任务,该任务指示您需要将查询手工添加到每个生成的 finder 方法的部署描述符中。

如果操作的可视性是私有的,或者如果返回类型不同于源 UML 类的名称且实体 Bean 类型为 CMP 2.x,则转换将查询操作转换成 select 方法。

操作可视性

返回类型

方法类型

私有

等于源类名

select 方法

非私有

等于源类名

finder 方法

私有

非源类名

select 方法

非私有

非源类名

select 方法

 

转换通过对以下各项进行修改后,在 Bean 类中生成 select 方法:

 

Select 名称

UML 操作名称

Select  方法名

xxx

ejbSelectXxx

selectXxx

ejbSelectXxx

SelectXxx

ejbSelectXxx

ejbSelectXxx

ejbSelectXxx

 

Select 返回类型

Java 转换分析的返回类型

select 方法返回类型

集合

java.util.Collection

java.util.Set

列表

java.util.Collection

排序列表

java.util.Set

<源类名>[]

java.util.Collection

<源类名>或“void”

本地接口名称

<用户定义的类型名称>[]

java.util.Collection

<非源类名(例如:字符串、整型等)>[]

java.util.Collection

<用户定义的类型名称>

用户定义的类型名称

<非源类名(例如:字符串、整型等)>

非源类名

EJB 转换创建一个任务,该任务指示您需要将查询手工添加到每个生成的 select 方法的部署描述符中。

<<Query>> 操作 - CMP 1.1

转换将源 UML 类上的 <<Query>> 操作转换成一种查询方法:finder 方法。CMP 1.1 实体 Bean 不支持 select 方法,因为这些方法仅可用于 CMP 2.x 实体 Bean。因此,无论 <<Query>> 操作的返回类型和可视性如何,转换总是在实体 Bean 的远程主接口中生成 finder 方法。

如下表所说明的,转换加以某些修改后,总是在远程主接口中生成 finder 方法:

方法修改

远程主接口

  • findXxx 的名称(请参阅“远程主接口 finder 名称”表。)
  • 抛出 javax.ejb.FinderException
  • 抛出 java.rmi.RemoteException
  • 返回类型(请参阅“远程主接口 finder 返回类型”表。)

 

远程主接口 finder 名称

UML 操作名称

finder 方法名

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

远程主接口 finder 返回类型

Java 转换分析的返回类型

finder 方法返回类型

集合

java.util.Collection

java.util.Set

列表

java.util.Collection

排序列表

java.util.Set

<源类名>[]

java.util.Collection

<源类名>或“void”

远程接口名称

<用户定义的类型名称>[]

java.util.Collection

<非源类名(例如:字符串、整型等)>[]

java.util.Collection

<用户定义的类型名称>

远程接口名称

<非源类名(例如:字符串、整型等)>

远程接口名称

EJB 转换创建一个任务,该任务指示您需要将查询手工添加到每个生成的 finder 方法的部署描述符中。

<<Query>> 操作 - BMP

转换将源 UML 类上的 <<Query>> 操作转换成一种查询方法:finder 方法。任何版本的 BMP 实体 Bean 都不支持 select 方法,因为这些方法仅可用于 CMP 2.x 实体 Bean。因此,无论 <<Query>> 操作的返回类型和可视性如何,转换总是在 Bean 实施类中生成 finder 方法。然后,转换在实体 Bean 的现有接口中生成 finder 方法。

如下表所说明的,转换加以某些修改后,在以下类中生成 finder 方法:

方法修改

本地主接口
(如果本地接口存在)

  • findXxx 的名称(请参阅“(本地)远程主 finder 名称”表。)
  • 抛出 javax.ejb.FinderException
  • 返回类型(请参阅“(本地)远程接口 finder 返回类型”表。)

远程主接口

(如果远程接口存在)

  • findXxx 的名称(请参阅“(本地)远程主 finder 名称”表。)
  • 抛出 javax.ejb.FinderException
  • 抛出 java.rmi.RemoteException
  • 返回类型(请参阅“(本地)远程接口 finder 返回类型”表。)

Bean 实施类

  • ejbFindXxx 的名称(请参阅“Bean 类 finder 名称”表。)
  • 抛出 javax.ejb.FinderException
  • 返回类型(请参阅“Bean 类 finder 返回类型”表。)

 

(本地)远程主 finder 名称

UML 操作名称

finder 方法名

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

ejbFindXxx

findEjbFindXxx

EjbFindXxx

findEjbFindXxx

 

Bean 类 finder 名称

UML 操作名称

finder 方法名

xxx

ejbFindXxx

findXxx

ejbFindXxx

FindXxx

ejbFindXxx

ejbFindXxx

ejbFindEjbFindXxx

EjbFindXxx

ejbFindEjbFindXxx

 

主接口 finder 返回类型

Java 转换分析的返回类型

finder 方法返回类型

集合

java.util.Collection

java.util.Set

列表

java.util.Collection

排序列表

java.util.Set

<源类名>[]

java.util.Collection

<源类名>或“void”

  • 本地接口名称
  • 远程接口名称

<用户定义的类型名称>[]

java.util.Collection

<非源类名(例如:字符串、整型等)>[]

java.util.Collection

<用户定义的类型名称>

  • 本地接口名称
  • 远程接口名称

<非源类名(例如:字符串、整型等)>

  • 本地接口名称
  • 远程接口名称

 

Bean 类 finder 返回类型

Java 转换分析的返回类型

finder 方法返回类型

集合

java.util.Collection

java.util.Set

列表

java.util.Collection

排序列表

java.util.Set

<类名>[]

java.util.Collection

<类名>或“void”

键类名称

 

内部类

忽略。

内部接口

忽略。

使用条款 | 反馈
(C) Copyright IBM Corporation 2005, 2005.
All Rights Reserved.