您可以使用「建立 Enterprise Bean」精靈,建立 CMP Entity Bean。
如果要建立具有儲存器管理持續性 (CMP) 的 Entity Bean,請執行下列動作:
- 在 J2EE 視景中,按一下。
這時會出現「建立 Enterprise Bean」精靈。
- 選取具有儲存器管理持續性 (CMP) 的 Entity Bean 圓鈕。
- 選取您要新增 Bean 的 EJB 專案。
- 在 Bean 名稱欄位中,輸入您要指派給 Enterprise Bean 的名稱。依照慣例,Bean 名稱開頭應該是大寫字母。
註: 您可以利用 Unicode 字元來作為 Bean 名稱,但 Enterprise Bean 所關聯的 Enterprise Bean 套件和類別沒有 Unicode 字元的支援。
- 在來源資料夾欄位中,選取新 Bean 的來源資料夾。
- 在預設套件欄位中,輸入新 Bean 的套件名稱。
- 如果您要將 Bean 新增至 EJB 2.0 或更新的專案中,請在 CMP 版本下拉清單中,選取新 Entity Bean 所要使用的 EJB 規格層次。
- 選擇性的: 如果是 EJB 2.x Bean,您可以選取產生含註解的 Bean 類別。 如果您選取這個選項,精靈會在 Bean 類別的 Java™ 程式碼開頭產生註釋。這些註釋會依照精靈所指定來定義 Bean 的實作。
之後,EJB 工具會利用這些註釋來產生必要的 Bean 類別,以及提供插入 EJB 部署描述子 (ejb-jar.xml) 的值。如果您熟悉註釋,且想要利用註釋而不是部署描述子來更新 Bean,請選取這個選項。
如果需要詳細資訊,請參閱註釋型程式設計概觀。
- 按下一步。
- 如果您要新 Bean 繼承相同 EJB 專案相同類型的現有的 Bean,請在 Bean 超類型下拉清單中選取一個 Bean。
- 在 Bean 類別欄位中,輸入 Bean 類別所需要的套件和類別名稱。 依預設,精靈會根據您定義的 Bean 名稱和預設套件來建議一個 Bean 類別。Bean 類別可以是精靈所產生的新類別,也可以是專案類別路徑中的現有類別。請按一下類別按鈕來開啟對話框,其會列出專案中對應於 Bean 類型的類別。針對具有程式碼的現有類別,Bean 類別的名稱會以藍色顯示。針對現有的二進位類別,Bean 類別的名稱會以紅色顯示。
- 定義用戶端視圖和介面。如果是 EJB 2.0 或更新的 Bean,您可以併入遠端用戶端視圖、本端用戶端視圖,或同時併入這兩者。
如果是 EJB 1.1 Bean,就只支援遠端用戶端視圖。每個 Session Bean 或 Entity Bean 都必須有至少一個用戶端視圖:
- 定義 Entity Bean 的 CMP 屬性:
- 按一下新增按鈕。
- 指定屬性的名稱和類型。
- 選取索引鍵欄位,使屬性成為 Entity Bean 的索引鍵欄位。
- 依新 Bean 的用戶端視圖而定,您可以選擇將屬性的 getter 和 setter 方法提升至遠端和本端介面中。
- 按一下套用來建立屬性。
定義好屬性之後,請按一下關閉。
依預設,精靈會指定下列 CMP 屬性,且會將它宣告為索引鍵欄位:- 名稱:id
- 類型:java.lang.Integer
您可以編輯或移除這個屬性。
註: 如果 Bean 不是繼承的,則需要有索引鍵。如果未定義索引鍵,Bean 會發生驗證錯誤。
建立好 Bean 之後,您可以利用部署描述子編輯器來新增索引鍵屬性,或將現有的屬性設為索引鍵。
- 在索引鍵類別欄位中,輸入 Bean 的索引鍵類別的套件和類別名稱。依預設,會選取索引鍵類別使用單一索引鍵屬性類型勾選框,且會以索引鍵 CMP 屬性的類型為索引鍵類別。如果您有單一索引鍵屬性,且它的類型是有效的 primkey-field(如 java.lang.Integer),就可以使用這個選項。
如果您併入多個索引鍵屬性,就會建立新的複合索引鍵類別。
- 按下一步。
- 選擇性的: 在 Bean Super 類別欄位中,輸入或選取所需要的類別。如果指定了 Bean 超類型,就會停用這個欄位。
- 選擇性的: 定義遠端或本端用戶端介面要繼承的任何介面:
- 按一下新增按鈕來開啟「選取類型」對話框,以便選取您要繼承的介面。
- 如果您新增了已不要繼承的介面,請在清單中選取這個介面,按一下移除。
- 按一下完成。 這時會將新的 Entity Bean 新增至指定的 EJB 專案中。
限制: 在設定繼承的 CMP Entity Bean 時,子 Bean 的 CMP 屬性,不能與在其母鏈中定義的屬性同名。
比方說,母項是 CMP Entity Bean,其中含有類型 int 的屬性 ID。
如果您利用精靈建立一個名叫 Child 的 CMP Bean,
並且將母項指定為它的超類型,然後再試圖新增至類型 int 的屬性 ID,
您會發現無法加入這個 ID 屬性,因為它會繼承母項的 ID 屬性。
如果 Child2(另一個不相關的 CMP Bean)含有類型為 java.lang.String 的屬性 ID,
並且透過部署描述子編輯器變更其繼承結構,讓它繼承自母項,
這樣一來會移除 Child2 的類型 java.lang.String 的 ID 屬性,
因為它會繼承母項的 ID 屬性,
而且可能會因為類型衝突而發生驗證錯誤。