J2EE 學習初期,密集的專業術語常令人望而生畏。本文整理 EJB 核心術語,以「中英對照 + 一句話定義 + 關鍵關聯」形式呈現,助你快速建立概念地圖。
| 術語 | 中文 | 核心定義 | 關鍵關聯 |
|---|---|---|---|
| Bean Instance | Bean 實例 | Bean 在容器中的具體化實例;若 Bean 比作 Class,Instance 即 Java Object | 由容器管理生命週期、池化、激活/鈍化 |
| Bean-Managed Persistence (BMP) | Bean 管理持久化 | 開發者在 Bean 中手動編寫 JDBC 代碼實現資料存取;容器調用 ejbLoad()/ejbStore() 觸發同步 |
靈活但繁瑣,適用複雜 SQL、非標準映射場景 |
| Container | 容器 | 實作 Home/Remote 介面、管理實例池、攔截方法調用、維護事務完整性的運行時環境 | 通常一容器管理一 Bean 類型(規範允許多 Bean) |
| Container-Managed Demarcation | 容器管理事務邊界 | 業務方法調用時容器自動開啟事務,方法結束自動提交/回滾;由事務屬性決定 | 對應 tx:required 等聲明式事務 |
| Container-Managed Persistence (CMP) | 容器管理持久化 | 開發者聲明持久化欄位,容器自動生成 SQL、同步狀態;欄位需在 Deployment Descriptor 定義 | EJB 2.x 核心特性,後為 JPA 取代 |
| Entity Bean | 實體 Bean | 代表可辨識的持久物件(如資料庫行、檔案、唯一資源);具有主鍵、可遠程存取 | 對比 Session Bean:有身份、可共享、持久 |
| Home Interface | Home 介面 | 客戶端用於創建/移除/查找 Bean 實例的介面;繼承 EJBHome,遵循 RMI 規範 |
Entity Bean 提供 findByPrimaryKey 等查詢方法 |
| Remote Interface | Remote 介面 | 定義客戶端可調用的業務方法集合;繼承 EJBObject,遵循 RMI 規範 |
網路透明調用入口,參數/返回值需可序列化 |
| Session Bean | 會話 Bean | 為特定客戶端服務,無共享身份,超時自動銷毀;分 Stateful/Stateless | 不直接持久化,協調 Entity Bean 完成業務流程 |
| Session Synchronization | 會話同步介面 | Session Bean 可選實作;提供 beforeCompletion()(可否決提交)、afterCompletion()(知曉結果) |
僅適用容器管理事務 (CMT) 的 Stateful Session Bean |
| Transaction Attribute | 事務屬性 | 定義方法的事務邊界行為,六種值:TX_NOT_SUPPORTED、TX_REQUIRED、TX_SUPPORTS、TX_REQUIRES_NEW、TX_MANDATORY、TX_BEAN_MANAGED |
部署描述符或註解配置,核心聲明式事務機制 |
客戶端 │ (JNDI 查找) ▼ Home Interface ──創建/查找──▶ Bean Instance ◀── 容器管理 (池化、事務、安全、持久化) │ │ │ (獲取 Remote 引用) │ (實作業務邏輯) ▼ ▼ Remote Interface ◀──業務調用──▶ Bean 類 (Entity/Session)
@TransactionAttribute 註解每個術語都對應一個設計決策:容器管理 vs Bean 管理(控制權歸屬)、Entity vs Session(狀態所有權)、聲明式 vs 程式化(關注點分離)。看懂術語,就是看懂了分布式組件架構的權力分配圖譜。