EJB 領域擁有嚴格的術語體系,準確掌握概念邊界,是閱讀規範、溝通設計、排查問題的前提。本文梳理 12 個高頻核心術語,給出標準定義與關鍵辨析。
| 術語 | 標準定義 | 關鍵辨析 / 補充 |
|---|---|---|
| Bean (Enterprise Bean) | 企業級 Java Bean 縮寫。應用程序構建素材,包含:業務接口、生命週期接口、實現業務方法的類。 | 非 JavaBean。進程間分布式組件,駐留於 EJB 容器,提供遠程服務。 |
| Bean Instance | Bean 在容器中的具體實例化對象。 | 類比:Bean ≈ Class,Bean Instance ≈ Java Object。容器管理實例池/緩存。 |
| Bean-Managed Persistence (BMP) | Bean 自行管理持久化狀態。容器調用 ejbLoad() / ejbStore() 回調,Bean 內部編寫 JDBC/SQL 邏輯。 |
適用:複雜映射、存儲過程、非標準數據源。彈性大,開發量大。 |
| Container | 實現 Bean 的 Home/Remote 接口,提供:實例管理、方法攔截、事務完整性、實例池管理、安全、生命週期等系統級服務。 | 規範要求容器管理多種 Bean,實際常一容器一 Bean 類型。Bean 不直接實例化,由容器創建/管理。 |
| Container-Managed Demarcation | 容器管理事務邊界。調用業務方法時自動啟動事務,方法結束自動提交/回滾。事務屬性由部署描述符或方法聲明決定。 | CMT(Container-Managed Transaction)核心機制。開發者無需編寫事務控制代碼。 |
| Container-Managed Persistence (CMP) | 容器負責 Bean 狀態持久化。Bean 通過 public field 暴露狀態,字段在部署描述符聲明,容器生成持久化代碼。 | 開發者無需寫 SQL/JDBC。適用標準關係映射。EJB 2.x 引入 EJB QL 查詢語言。 |
| Entity Bean | 代表可識別的持久業務對象。典型映射:關係數據庫行、文件系統文件、唯一可識別資源。 | 生命週期長,跨進程/伺服器重啟存活(數據在即對象在)。主鍵唯一標識。 |
| Home Interface | 每個 Bean(Session/Entity)必有的工廠接口。提供:創建、移除、查找(僅 Entity)實例的方法。繼承 EJBHome。 |
客戶端通過 JNDI 查找 Home,再調用 create/findByPrimaryKey 獲取 Remote。 |
| Remote Interface | 定義 Bean 業務方法集合的客戶端視圖接口。繼承 EJBObject。客戶端通過 Remote 調用業務邏輯。 |
RMI 規範。EJB 3.0 簡化為 POJO + @Remote/@Local 注解,不再強制繼承。 |
| Session Bean | 為特定客戶端創建,閒置超時後銷毀。不直接代表持久數據,封裝業務流程/工作流。 | 分Stateful(維護會話狀態、專屬實例)與Stateless(無狀態、池化複用)兩種。 |
| Session Synchronization | 可選接口,讓 Stateful Session Bean 接收事務邊界通知:beforeCompletion()(可否決)、afterCompletion(boolean)(知曉結果)。 |
僅 Stateful Bean 可實現。用於緩存同步、資源清理等事務邊界邏輯。 |
| Transaction Attribute | 指定 Bean/方法的事務傳播行為。六種值:TX_NOT_SUPPORTED、TX_REQUIRED、TX_SUPPORTS、TX_REQUIRES_NEW、TX_MANDATORY、TX_BEAN_MANAGED。 |
可標註在 Bean 級(默認所有方法)或方法級(覆蓋默認)。EJB 3.0 以 @TransactionAttribute 替代。 |
Client → JNDI → Home → create/find → Remote → Business Methods
↑ ↓
Container ←── manages ── Bean Instance (Pool/Cache)
↑ ↓
Services: Tx, Security, Persistence, Lifecycle, Pooling
精準術語消除溝通歧義。建議團隊建立術語表作為設計文檔、代碼評審、問題單的共享語言基線。