<<Entity>> 類別

「UML 至 EJB」轉換會將標示為 <<Entity>> 造型的類別轉換成 CMP 2.x、CMP 1.1 或 BMP Entity Bean, 且其 Bean 名稱等於來源 UML 類別的名稱。所產生之 Entity Bean 的類型會對應至您在 EJB 轉換配置視窗之實體標籤中所選的選項。

這項轉換一律會為 Entity Bean 產生下列的 Java 類別:

 

當您在實體標籤上按一下僅遠端介面時,這項轉換會產生下列的 Java 類別:

 

當您在實體標籤上按一下僅本端介面時,這項轉換會產生下列的 Java 類別:

 

當您在實體標籤上按一下本端與遠端介面時,這項轉換會產生下列的 Java 類別:

 

轉換會在針對來源 UML 類別之母套件產生的套件資料夾中,產生所有的類別。如果您所建立的 UML 模型不含套件, 轉換會產生一個預設套件 ejbs

轉換會在目標 EJB 專案的來源樹狀結構中產生 Bean 類別檔與索引鍵類別檔。

轉換會在目標 EJB 專案之用戶端專案的來源樹狀結構中,產生四個介面檔。如果沒有任何用戶端專案存在, 轉換會在目標 EJB 專案中產生介面檔。

轉換會將定義 Entity Bean 的資料新增到部署描述子中 (ejb-jar.xml)。

一般化關係

如果 Entity Bean 的來源 UML 類別和另一個具有 <<Entity>> 造型的 UML 類別間, 存在一般化關係(例如延伸關係), 則該類別所代表的 Entity Bean 會成為所要產生之 Entity Bean 的 EJB Super 類別

這兩個 Entity Bean 的類型必須相同。因此,這兩個 Entity Bean 必須是 CMP 2.x、 CMP 1.1 或 BMP。比方說,如果 Super Bean 為 CMP 2.x Entity Bean, 則所有 Child Bean 必須是 CMP 2.x Entity Bean。如果 Super Bean 的類型和預期的 Child Bean 類型不同, 轉換所產生的 Child Bean 將沒有一般化關係。

實現化關係

如果 Entity Bean 的來源 UML 類別和介面元素間存在實現化關係 (例如,實作關係), 則來源介面所代表的介面會由四個介面(遠端、Home、本端、本端 Home)來實作。

未標示的屬性 – CMP 2.x

轉換會將來源 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 關係。不過,如果屬性類型是另一個 Enterprise Bean (但非 CMP 2.x Entity Bean)的屬性類型, 則轉換不會將屬性轉換成 CMP 欄位或關聯。轉換反而會在日誌檔中寫入一則訊息, 指出不會轉換來源屬性。

未標示的屬性 – CMP 1.1

轉換會將來源 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 欄位或關聯。轉換反而會在日誌檔中寫入一則訊息, 指出不會轉換來源屬性。

未標示的屬性 – BMP

轉換會將來源 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>> 屬性 – CMP 2.x 與 CMP 1.1

轉換也會將來源 UML 類別上標示為 <<Id>> 屬性的屬性轉換成 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>> 屬性 – BMP

轉換也會將來源 UML 類別上標示為 <<Id>> 的屬性轉換成 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 欄位類型對映

如同您在下表中所見,轉換所產生之 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

 

<<Query>> 作業 – CMP 2.x

這項轉換會將來源 UML 類別上的 <<Query>> 作業轉換成兩種類型的查詢方法之一: finder 方法和 select 方法。請選取僅存在於 CMP 2.x Entity Bean 中的方法。

轉換會在下表所列的類別中產生 finder 方法,並有部分修改。

類別

方法修正

本端 Home 介面

(若有本端介面的話)

  • findXxx 的名稱(請見「Finder 名稱」表。)
  • 擲出 javax.ejb.FinderException
  • 傳回類型(請見「Finder 傳回類型」表。)

遠端 Home 介面

(若有遠端介面的話)

  • findXxx 的名稱(請見「Finder 名稱」表。)
  • 擲出 javax.ejb.FinderException
  • 擲出 java.rmi.RemoteException
  • 傳回類型(請見「Finder 傳回類型」表。)

 

Finder 名稱

UML 作業名稱

finder 方法名稱

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

Home 介面 finder 傳回類型

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

<使用者定義的類型名稱>

產生 select 方法而非 finder 方法

<非來源類別名稱(如 String、Integer 等)>

產生 select 方法而非 finder 方法

 

EJB 轉換會建立一項作業,指出您必須手動新增查詢到每一個產生之 finder 方法的部署描述子中。

如果作業上的可見性是 private, 或是傳回類型和來源 UML 類別的名稱不同,且 Entity Bean 類型為 CMP 2.x, 則這項轉換會將查詢作業轉換成 select 方法。

作業可見性

傳回類型

方法類型

Private

等於來源類別名稱

Select 方法

不是 private

等於來源類別名稱

finder 方法

Private

不是來源類別名稱

Select 方法

不是 private

不是來源類別名稱

Select 方法

 

轉換會在 Bean 類別中產生 select 方法,但有部分修改:

 

Select 名稱

UML 作業名稱

Select  方法名稱

xxx

ejbSelectXxx

selectXxx

ejbSelectXxx

SelectXxx

ejbSelectXxx

ejbSelectXxx

ejbSelectXxx

 

Select 傳回類型

Java 轉換剖析的傳回類型

選取方法傳回類型

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 等)>

非來源類別名稱

EJB 轉換會建立一項作業,指出您必須手動新增查詢到每一個產生之 select 方法的部署描述子中。

<<Query>> 作業 – CMP 1.1

這項轉換會將來源 UML 類別上的 <<Query>> 作業轉換成下列這種查詢方法類型: finder 方法。CMP 1.1 Entity Bean 不支援 select 方法, 這是因為只有 CMP 2.x Entity Bean 才有提供這些方法。因此,不論 <<Query>> 作業的傳回類型與可見性為何, 轉換都會在 Entity Bean 的遠端 Home 介面中產生一個 finder 方法。

如同您在下表中所見,轉換會固定在遠端 Home 介面中產生 finder 方法,並有部分修改:

類別

方法修正

遠端 Home 介面

  • findXxx 的名稱(請見「遠端 Home 介面 finder 名稱」表。)
  • 擲出 javax.ejb.FinderException
  • 擲出 java.rmi.RemoteException
  • 傳回類型(請見「遠端 Home 介面 finder 傳回類型」表。)

 

遠端 Home 介面 finder 名稱

UML 作業名稱

finder 方法名稱

xxx

findXxx

findXxx

findXxx

FindXxx

findXxx

 

遠端 Home 介面 finder 傳回類型

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 等)>

遠端介面名稱

EJB 轉換會建立一項作業,指出您必須手動新增查詢到每一個產生之 finder 方法的部署描述子中。

<<Query>> 作業 – BMP

這項轉換會將來源 UML 類別上的 <<Query>> 作業轉換成下列這種查詢方法類型: finder 方法。任何版本的 BMP Entity Bean 皆不支援 select 方法, 這是因為只有 CMP 2.x Entity Bean 才有提供這些方法。因此,不論 <<Query>> 作業的傳回類型與可見性為何, 轉換都會在 Bean 實作類別中產生一個 finder 方法。然後,轉換會在 Entity Bean 的現有介面中產生 finder 方法。

如同您在下表中所見,轉換會在下列類別中產生 finder 方法,並有部分修改:

類別

方法修正

本端 Home 介面
(若有本端介面的話)

  • findXxx 的名稱(請見「(本端)遠端 Home finder 名稱」表。)
  • 擲出 javax.ejb.FinderException
  • 傳回類型(請見「(本端)遠端介面 finder 傳回類型」表。)

遠端 Home 介面

(若有遠端介面的話)

  • findXxx 的名稱(請見「(本端)遠端 Home finder 名稱」表。)
  • 擲出 javax.ejb.FinderException
  • 擲出 java.rmi.RemoteException
  • 傳回類型(請見「(本端)遠端介面 finder 傳回類型」表。)

Bean 實作類別

  • ejbFindXxx 的名稱(請見「Bean 類別 finder 名稱」表。)
  • 擲出 javax.ejb.FinderException
  • 傳回類型(請見「Bean 類別 finder 傳回類型」表。)

 

(本端)遠端 Home 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

 

Home 介面 finder 傳回類型

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 等)>

  • 本端介面名稱
  • 遠端介面名稱

 

Bean 類別 finder 傳回類型

Java 轉換剖析的傳回類型

finder 方法傳回類型

Collection

java.util.Collection

Set

java.util.Set

List

java.util.Collection

SortedList

java.util.Set

<類別名稱>[]

java.util.Collection

<類別名稱> 或 “void”

索引鍵類別名稱

 

內部類別

忽略。

內部介面

忽略。

使用條款 | 意見
(C) Copyright IBM Corporation 2004.
All Rights Reserved.