UML から EJB への変換では、<<Entity>> ステレオタイプでマークされたクラスは、CMP 2.x、CMP 1.1、または BMP Entity Bean に変換されます。この場合の Bean 名は、ソース UML クラスの名前と同じになります。 生成される Entity Bean のタイプは、「Entity」タブの「EJB 変換の構成」ウィンドウで選択したオプションと同じになります。
この変換では必ず次の Entity Bean 用 Java クラスが生成されます:
「エンティティー」タブで「リモート・インターフェースのみ」をクリックした場合、この変換では次の Java クラスが生成されます:
「エンティティー」タブで「ローカル・インターフェースのみ (Local Interfaces Only)」をクリックした場合、この変換では次の Java クラスが生成されます:
「エンティティー」タブで「ローカルおよびリモート・インターフェース (Local and Remote Interfaces)」をクリックした場合、この変換では次の Java クラスが生成されます:
この変換では、ソース UML クラスの親パッケージ用に生成されるパッケージ・フォルダー内にすべてのクラスが生成されます。 パッケージを使用せずに UML モデルを作成した場合、変換を行うと、ejbs という名前のデフォルトのパッケージが生成されます。
この変換は、ターゲット EJB プロジェクトのソース・ツリーに Bean クラス・ファイルおよびキー・クラス・ファイルを生成します。
この変換は、ターゲット EJB プロジェクトのクライアント・プロジェクトのソース・ツリーに 4 つのインターフェース・ファイルを生成します。 クライアント・プロジェクトが存在しない場合、この変換はターゲット EJB プロジェクトにインターフェース・ファイルを生成します。
この変換は、配置ディスクリプター (ejb-jar.xml) に、Entity Bean を定義するデータを追加します。
Entity Bean に対応するソース UML クラスが、<<Entity>> ステレオタイプの別の UML クラスと汎化関係 (拡張関係など) にある場合、UML クラスが示す Entity Bean は、Entity Bean が生成されるようにするために EJB スーパークラスになります。
Entity Bean は両方とも同じタイプである必要があります。 つまり、両方の Entity Bean が CMP 2.x、CMP 1.1、BMP のうちのいずれかである必要があります。 例えば、スーパー Bean が CMP 2.x Entity Bean の場合、子 Bean も CMP 2.x Entity Bean である必要があります。 スーパー Bean と変換で生成される子 Bean が同じタイプでないと、その子 Bean は汎化関係を持ちません。
Entity Bean に対応するソース UML クラスが、 インターフェース要素と実現関係 (実装関係など) に ある場合、ソース・インターフェースが示すインターフェース は 4 つのインターフェース (リモート、ホーム、ローカル、 ローカル・ホーム) によって実装されます。
ソース UML クラスの属性は Entity 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 Entity Bean の属性タイプの場合、属性は CMP フィールドには変換されませんが、関連の一部と見なされて、EJB 関係に変換されます。 ただし、属性タイプが、CMP 2.x Entity Bean 以外の Enterprise Bean の属性タイプの場合には、属性は CMP フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
ソース UML クラスの属性は Entity Bean の CMP フィールドに変換され、次の表のプロパティーを持ちます:
CMP 1.1 フィールドのプロパティー |
CMP フィールドの値 |
名前 |
UML 属性名 |
タイプ |
属性タイプから決定されるタイプ (「タイプのマップ」の表を参照) |
キー・フィールド |
False |
Bean 実装クラスにフィールドを生成 |
False |
getter と setter の生成 |
True |
getter と setter をローカル・インターフェースにプロモート |
False |
getter と setter をリモート・インターフェースにプロモート |
True (常時) |
IsArray |
UML 属性に有限上限値が含まれる場合は True |
属性タイプが別の Entity Bean または Enterprise Bean の属性タイプの場合、属性は CMP フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
ソース UML クラスの属性は Entity Bean の BMP フィールドに変換され、次のプロパティーを持ちます:
BMP フィールドのプロパティー |
BMP フィールドの値 |
名前 |
UML 属性名 |
タイプ |
属性タイプから決定されるタイプ (「タイプのマップ」の表を参照) |
キー・フィールド |
False |
Bean 実装クラスにフィールドを生成 |
True |
getter と setter の生成 |
True |
getter と setter をローカル・インターフェースにプロモート |
True (ローカル・インターフェースが存在する場合) |
getter と setter をリモート・インターフェースにプロモート |
True (リモート・インターフェースが存在する場合) |
IsArray |
UML 属性に有限上限値が含まれる場合は True |
属性タイプが別の Entity Bean または EJB の属性タイプである場合、属性は BMP フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
<<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 |
属性タイプが別の Entity Bean または Enterprise Bean の属性タイプの場合、属性は CMP キー・フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
<<ID>> がマークされたソース UML クラスの属性は、BMP フィールドに変換されますが、次の表に列挙した別のプロパティー値を持ちます。 これらの BMP フィールドは、主キーの形成に利用できます。
BMP フィールドのプロパティー |
BMP フィールドの値 |
名前 |
UML 属性名 |
タイプ |
属性タイプから決定されるタイプ (「タイプのマップ」の表を参照) |
キー・フィールド |
True |
Bean 実装クラスにフィールドを生成 |
True |
getter と setter の生成 |
True |
getter と setter をローカル・インターフェースにプロモート |
False |
getter と setter をリモート・インターフェースにプロモート |
False |
IsArray |
UML 属性に有限上限値が含まれる場合は True |
属性タイプが別の Entity Bean または Enterprise Bean の属性タイプの場合、属性は BMP キー・フィールドにも関連にも変換されません。 その代わりに、ソース属性が変換されないことを示すメッセージがログ・ファイルに書き込まれます。
次の図に示すように、変換を行うと生成される CMP および BMP フィールドは、ソース属性のデータ型に基づくデータ型を持ちます:
UML 属性タイプ |
CMP/BMP フィールド・タイプ |
boolean |
boolean |
byte |
byte |
char |
char |
float |
float |
int |
int |
long |
long |
short |
short |
Boolean |
java.lang.Boolean |
Byte |
java.lang.Byte |
Char |
java.lang.Char |
Float |
java.lang.Float |
Integer |
java.lang.Integer |
Long |
java.lang.Long |
Short |
java.lang.Short |
String |
java.lang.String |
その他 |
完全修飾名 |
この変換は、ソース UML クラスのマーク解除された操作を、Entity Bean 上のビジネス・メソッドに変換します。 最初に、操作は、マーク解除された UML クラスの操作と同じ方法で変換されます。 変換された操作は、いくらか修正され、次の表のクラスに追加されます。
クラス |
メソッドの修正 |
Bean クラス |
変更なし |
ローカル・インターフェース |
インターフェース・メソッド |
リモート・インターフェース |
インターフェース・メソッド、java.rmi.RemoteException をスローする |
この変換は、ソース UML クラスでの <<Query>> 操作を、Finder メソッドと Select メソッドという 2 つのタイプの照会メソッドのいずれかに変換します。Select メソッドは、CMP 2.x Entity Bean にのみ存在します。
変換により次の表のクラスに修正された Finder メソッドが生成されます:
クラス |
メソッドの修正 |
ローカル・ホーム・インターフェース (ローカル・インターフェースが存在する場合) |
|
リモート・ホーム・インターフェース (リモート・インターフェースが存在する場合) |
|
UML 操作名 |
Finder メソッド名 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Java 変換で解析された戻り値の型 |
Finder メソッドの戻り値の型 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<ソース以外のクラス名>[] |
java.util.Collection |
<ソース以外のクラス名> OR「void」 |
|
<ユーザー定義の型の名前>[] |
java.util.Collection |
<ソース以外のクラス名 (例えば、String、Integer など)>[] |
java.util.Collection |
<ユーザー定義の型の名前> |
Finder メソッドの代わりに Select メソッドを生成 |
<ソース以外のクラス名 (例えば、String, Integer など)> |
Finder メソッドの代わりに Select メソッドを生成 |
変換で生成された各 Finder メソッドの配置ディスクリプターにクエリーを手動で追加する必要があります。
戻り値の型がソース UML クラスの名前と異なり、Entity Bean のタイプが CMP 2.x の場合、または操作の可視性が private の場合、クエリー操作は Select メソッドに変換されます。
操作の可視性 |
戻り値の型 |
メソッドのタイプ |
private |
ソース・クラス名と同じ |
Select メソッド |
private ではない |
ソース・クラス名と同じ |
Finder メソッド |
private |
ソース・クラス名ではない |
Select メソッド |
private ではない |
ソース・クラス名ではない |
Select メソッド |
この変換は、次の修正を含む Bean クラスの Select メソッドを生成します。
UML 操作名 |
Select メソッド名 |
xxx |
ejbSelectXxx |
selectXxx |
ejbSelectXxx |
SelectXxx |
ejbSelectXxx |
ejbSelectXxx |
ejbSelectXxx |
Java 変換で解析された戻り値の型 |
Select メソッドの戻り値の型 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<ソース・クラス名>[] |
java.util.Collection |
<ソース・クラス名> または 「void」 |
ローカル・インターフェース名 |
<ユーザー定義の型の名前>[] |
java.util.Collection |
<ソース以外のクラス名 (例えば、String、Integer など)>[] |
java.util.Collection |
<ユーザー定義の型の名前> |
ユーザー定義の型の名前 |
<ソース以外のクラス名 (例えば、String、Integer など)> |
ソース以外のクラス名 |
変換で生成された各 Select メソッドの配置ディスクリプターにクエリーを手動で追加する必要があります。
ソース UML クラスの <<Query>> 操作は、Query メソッドのタイプの 1 つに変換されます: Finder メソッド。 CMP 1.1 Entity Bean は Select メソッドをサポートしていません。Select メソッドは CMP 2.x Entity Bean でのみ使用可能です。 したがって、戻り値の型および <<Query>> 操作の可視性に関わらず、Entity Bean のリモート・ホーム・インターフェースには Finder メソッドが変換により生成されます。
次の表に示すように、リモート・ホーム・インターフェースには必ず修正された Finder メソッドが変換により生成されます:
クラス |
メソッドの修正 |
リモート・ホーム・インターフェース |
|
UML 操作名 |
Finder メソッド名 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Java 変換で解析された戻り値の型 |
Finder メソッドの戻り値の型 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<ソース・クラス名>[] |
java.util.Collection |
<ソース・クラス名> OR 「void」 |
リモート・インターフェース名 |
<ユーザー定義の型の名前>[] |
java.util.Collection |
<ソース以外のクラス名 (例えば、String、Integer など)>[] |
java.util.Collection |
<ユーザー定義の型の名前> |
リモート・インターフェース名 |
<ソース以外のクラス名 (例えば、String、Integer など)> |
リモート・インターフェース名 |
変換で生成された各 Finder メソッドの配置ディスクリプターにクエリーを手動で追加する必要があります。
ソース UML クラスの <<Query>> 操作は、Query メソッドのタイプの 1 つに変換されます: Finder メソッド。 BMP Entity Bean はどのバージョンも Select メソッドをサポートしていません。Select メソッドはCMP 2.x Entity Bean でのみ使用可能です。 したがって、戻り値の型および <<Query>> 操作の可視性に関わらず、Bean 実装クラスには Finder メソッドが変換により生成されます。 また、Entity Bean の既存のインターフェースにも、変換により Finder メソッドが生成されます。
変換を行うと、以下の表に示したクラスに修正された Finder メソッドが生成されます:
クラス |
メソッドの修正 |
ローカル・ホーム・インターフェース |
|
リモート・ホーム・インターフェース (リモート・インターフェースが存在する場合) |
|
Bean 実装クラス |
|
UML 操作名 |
Finder メソッド名 |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
ejbFindXxx |
findEjbFindXxx |
EjbFindXxx |
findEjbFindXxx |
UML 操作名 |
Finder メソッド名 |
xxx |
ejbFindXxx |
findXxx |
ejbFindXxx |
FindXxx |
ejbFindXxx |
ejbFindXxx |
ejbFindEjbFindXxx |
EjbFindXxx |
ejbFindEjbFindXxx |
Java 変換で解析された戻り値の型 |
Finder メソッドの戻り値の型 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<ソース・クラス名>[] |
java.util.Collection |
<ソース・クラス名> または 「void」 |
|
<ユーザー定義の型の名前>[] |
java.util.Collection |
<ソース以外のクラス名 (例えば、String、Integer など)>[] |
java.util.Collection |
<ユーザー定義の型の名前> |
|
<ソース以外のクラス名 (例えば、String、Integer など)> |
|
Java 変換で解析された戻り値の型 |
Finder メソッドの戻り値の型 |
Collection |
java.util.Collection |
Set |
java.util.Set |
List |
java.util.Collection |
SortedList |
java.util.Set |
<クラス名>[] |
java.util.Collection |
<クラス名> または“void” |
キー・クラス名 |
無視されます。
無視されます。