建立 CMP 1.x 的關係

CMP 1.x 關係不符合 EJB 1.x 規格標準。因此建立 WebSphere® Application Server 延伸,處理 1.x 關係。

您可以使用 EJB 部署描述子編輯器, 指定 EJB 專案或模組中兩個 Enterprise Bean 之間的關係。EJB 部署描述子編輯器會產生適當 finder 方法, 支援所建立的任何關係。

當您定義兩個 CMP 之間的關係時, 額外 CMP 欄位 (根據參照 CMP Bean 的索引鍵欄位) 會新增至向前參照角色的擁有 CMP Bean (在擁有 CMP Bean 上,已選取「外來索引鍵」勾選框)。

例如, 公司對員工有 1..N 個關係,並且分別具有公司及員工角色。公司角色是正向, 並且 Company CMP Bean 有名為 "companyID" 及 "companyName" 的索引鍵欄位。自動新增至 Employee Bean 的 CMP 欄位是 "company_companyID" 及 "company_companyName"。 在 EJB 編輯器中,會隱藏這些欄位,因為只為了支援「員工」關係角色, 新增它們。如果從 ejb-jar.xml 檔案中刪除這些 CMP 欄位, 但關係仍存在時,就會發生問題。

隨附於 Rational® Application Developer 的 AutoWorld 範例專案中, 可以看見更多範例關係。下圖顯示 EJB 部署描述子編輯器「關係」頁面上的「車庫-車輛」關係細節。單一車庫中可以停放多部車輛, 所以對應關係指示多 (0..*) 對 1 (0..1) 的關係。


「新增關係」精靈的擷取畫面。

建立精靈會顯示關係的 UML 視圖, 並且根據 UML 模型修改欄位。建立關係時,同時會建立其他類別, 以支援執行時期維護這兩個 Bean 之間的鏈結。此外,也會產生其他方法, 並放入這兩個 Enterprise Bean 的 Home、Remote 及 Bean 類別。當初次建立關係時, EJB 部署描述子編輯器中會出現編譯錯誤,因為產生的 Link 類別需要編譯。您會看到這些檔案的實際程式碼, 但 Home、Remote 及 Bean 類別中的變更尚未編譯。等到建置專案時,才會發生編譯; 通常在儲存 EJB 部署描述子編輯器時,會自動發生這個動作。 因此,儲存編輯器之後,便不會看到編譯錯誤。

註: 如果一或多個 CMP Bean 之間存在關係, 則變更某個 CMP 的索引鍵形式,可能會造成重新產生相關的 CMP。

若要建立兩個 Enterprise Bean (CMP 1.x ) 之間的關係:

  1. 切換至 J2EE 視景。
  2. 在「專案瀏覽器」視圖中,選取所要的 EJB 模組。
  3. 用滑鼠右鍵按一下部署描述子編輯器,從蹦現功能表中選取開啟工具
  4. 在編輯器的「概觀」頁面上,選取「關係」區段。
  5. 按一下新增。這時會出現「新增關係」精靈。
  6. 從 Bean A 清單 (左欄) 中選取一個 Enterprise Bean。
  7. 從 Bean B 清單 (右欄) 中選取一個 Enterprise Bean。這時會根據所選擇的 Enterprise Bean 名稱, 自動建立「關係名稱」欄位。然而,您可以編輯這個欄位,重新命名關係。
  8. 下一步
  9. 依預設,會自動產生角色名稱,但可以修改它。
  10. 設定每個角色的參數。選擇下列選項:
    • 可導覽的:表示使用這個角色可以擷取關聯中另一個 Bean 的實例。
    • 對應關係:表示角色可能代表另一個 Bean 的許多實例。使用 1..x,角色會成為必要。
    • 外來索引鍵:表示關係中所指定的 Enterprise Bean 具有另一個關係角色的外來索引鍵。
  11. 按一下完成
註: 為了支援 CMP 1.x 關係,而建立 Link 類別。這些 Link 類別需要知道 Bean 主鍵類別。如果您變更關係中相關 CMP 1.x 的主鍵類別,產生的 Link 類別仍會包含對舊主鍵類別的參照。暫行解決方法是,手動更新 Link 類別。應該只有兩個地方需要變更。
使用條款 | 讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.