EJB 部署描述子編輯器可協助您定義 Enterprise Bean 之間的繼承關係。
您可以使用這些工具,來定義兩種形式的繼承:
在標準的類別繼承中,Home 介面、遠端介面或 Enterprise Bean 類別會繼承本身不是 Enterprise Bean 類別或介面的基本類別之內容和方法。
您要利用 Enterprise Bean 精靈的 Super 類別欄位來指定 Bean Super 類別。
相對來看,在 EJB 繼承中,Enterprise Bean 會繼承位於同一 EJB 模組內其他 Enterprise Bean 的內容(如 CMP 欄位和關係角色)、方法和方法層次的組合描述子屬性。
為了要協助您定義 EJB 繼承關係,我們提供了一個「新建 Enterprise Bean」精靈,您可以利用它來建立繼承現有 Enterprise Bean 的新 Enterprise Bean。您可以利用 EJB 編輯器來變更現有 Enterprise Bean 的繼承結構,
它會更新所產生的 Java™ 程式碼。
本產品支援一些其他方法,利用 EJB 編輯器的「繼承」區段所提供的精靈來變更母項:
- 將繼承結構(不是根)中的 Bean 類別移至不同的繼承結構中(變更母項)。
- 新增母項到目前不在繼承結構中的現有 Bean 類別中。現在,繼承的 Bean 及其所有子類型都會參照其超類型的索引鍵類別。繼承的 Bean 的索引鍵外觀會改變,結果可能會改變或移除其 Bean 類別的方法及遠端資訊。
如果其他 Java 類別不再參照舊的索引鍵類別,就可以安全地將它刪除。
- 從繼承結構中移除 Bean,使它成為根。您必須指定一個索引鍵類別。如果您選擇的話,EJB 工具會為您建立一個索引鍵。它會有和 Bean 先前的索引鍵相同的屬性,因此,類別/Bean 也仍然有效。
比方說,假設 PTEmployee 的母項為 Employee。當您將 PTEmployee 移出時,就可以將 PTEmployeeKey 建立為新的索引鍵類別。當您按一下確定時,這些工具會保留、反映並自動產生相同的欄位。
以下是 EJB 繼承的某些性質:
- 對於 CMP Entity Bean 而言,有單一表格和根/葉表格對映的支援。不過,因為 SQL 陳述式較大,
所以大型階層(寬或深)的效率可能較差。根/葉對映因為 SQL 陳述式
內的合併數量,較易發生這個問題。
- 部署描述子會列出每個 Enterprise Bean 的所有 CMP 欄位,其中包括已被繼承的欄位。每個子類型 Enterprise Bean 都會建立定義給超類型 EJB 的方法許可權和方法交易。EJB 參照也是如此。
- 當定義 Enterprise Bean 之間的繼承關係時,不在關聯中的所有 Home 方法都會複製到子項 Bean 中。如果不需要支援超類型 create 方法,
子項 Home 介面不會為了擁有子類型特定的 create 方法,而繼承超類型 Enterprise Bean 的 Home 介面。
- 新的子 Enterprise Bean 的 Bean 類別會繼承母 Enterprise Bean 的 Bean 類別。子項 Bean 類別並不會定義任何母項 Bean 類別方法。
- 「本端」和「遠端」介面都會繼承超類型 Enterprise Bean 的遠端介面。
- 對於所有繼承的 Enterprise Bean 而言,索引鍵類別是共通的。換句話說,子 Enterprise Bean 中的索引鍵類別和母 Enterprise Bean 中的索引鍵類別會完全相同。
- 您只能新增至在根 Bean 的索引鍵中。
「程式碼」頁面和 EJB 繼承
如果您要修改繼承階層中的 CMP Entity Bean,
必須使用精靈和 EJB 部署描述子編輯器的介面部分,而不是「程式碼」頁面。比方說,如果您要新增或移除 CMP 欄位,
或者變更 CMP Bean 的索引鍵欄位,
這些欄位都會針對所有繼承的 Bean,由工具同步處理,使這些 Bean 符合 EJB 規格。
不過如果您是在「程式碼」頁面更改程式碼的話,就不一定會進行這種同步處理作業了。