Entity Bean 代表底層持久資料,最常見對應關聯式資料庫記錄。簡單 Bean 對應單一資料表列,複雜 Bean 可對應多表關聯視圖。建議單一 Bean 對應單一資料表,再透過關聯擴展,利於快取重用與資料一致性。
| 特性 | Session Bean | Entity Bean |
|---|---|---|
| 代表對象 | 商業流程/工作單元 | 持久資料實體(資料庫列) |
| 客戶端關係 | 專屬一客戶端 (1:1) | 多客戶端共享 (多:1) |
| 狀態保存 | 客戶端會話狀態 | 資料實體狀態 |
| 交易控制 | 可管理跨 Bean 交易 | 參與交易,不主導全域交易 |
最佳實踐:客戶端 → Session Bean(流程控制、交易邊界) → Entity Bean(資料存取)。
Entity Bean 不以建立/刪除為生命週期核心(對應資料庫 INSERT/DELETE),客戶端透過 Home 介面的 Finder 方法定位實體。Finder 方法命名規則:findBy<條件>,回傳遠端介面參考或列舉。
Bean 類別實作對應 ejbFindBy<條件>,回傳主鍵或主鍵列舉。容器根據主鍵建立/重用 EJBObject,確保同一資料記錄對應唯一 EJBObject 實例,所有客戶端共享。
SerializablegetPrimaryKey() 取得主鍵,後續用 findByPrimaryKey() 重建參考findByPrimaryKey(Object key)EJBHome 的 remove(Object primaryKey)、remove(Handle)、getEJBMetaData()主鍵類別設計彈性大,可為單一欄位或複合鍵,關鍵在於唯一識別資料記錄。