實作 javax.ejb.EntityBean 介面,除繼承 Session Bean 的活化/鈍化方法外,新增:
setEntityContext(EntityContext) / unsetEntityContext():實體上下文注入與移除ejbLoad():從資料庫載入資料到 Bean 欄位ejbStore():將 Bean 欄位寫回資料庫開發者在 ejbLoad() / ejbStore() 撰寫 JDBC 程式碼同步資料。容器啟動交易、調用 ejbLoad()、執行商業方法、提交前調用 ejbStore()。資料庫記錄在交易期間鎖定,隔離等級由部署描述符指定。ejbActivate/Passivate 不負責資料同步。
部署描述符宣告 container-managed 欄位,容器自動處理資料庫映射與同步。ejbLoad()/ejbStore() 仍會被調用但無實際資料庫操作。CMP 簡化開發,無需物件關聯映射工具即可高效完成基本映射,開發者常發現比 BMP 更有效率。
兩大角色:Bean 開發者(商業邏輯)與 部署者(環境配置)。部署描述符為標準 Java 類別,序列化後放入 JAR。核心內容:
SessionDescriptor:狀態類型、逾時設定EntityDescriptor:容器管理欄位列表、主鍵類別名稱ControlDescriptor 陣列:每方法的交易屬性(隔離等級、交易屬性、run-as 身分)交易屬性六種:TX_NOT_SUPPORTED、TX_SUPPORTS、TX_REQUIRED、TX_REQUIRES_NEW、TX_MANDATORY、TX_BEAN_MANAGED。開發者指定,部署者通常不修改。
JAR 包含:Bean 類別、Home/Remote 介面、序列化部署描述符、圖示檔。Manifest 須宣告部署描述符條目:
Name: AccountDD.ser Enterprise-Bean: true
廠商提供工具協助產生部署描述符並打包 JAR,開發者無需手動操作。