EJB 2.0 定義三種 Bean 類型,各司其職構建企業級應用。本文結合電子商務購物場景,詳細對比 Session Bean (有/無狀態)、Entity Bean (BMP/CMP)、Message-Driven Bean 的適用場景與選型原則。
| 類型 | 核心職責 | 狀態特徵 | 生命週期 |
|---|---|---|---|
| Session Bean | 業務流程/邏輯/工作流執行 | 有狀態/無狀態 | 客戶端會話期間 / 池化複用 |
| Entity Bean | 持久化業務資料實體 | 永久狀態 (資料庫映射) | 容器管理 / Bean 管理持久化 |
| Message-Driven Bean | 非同步訊息處理 | 無狀態 | 容器管理實例池,訊息驅動 |
| 維度 | Stateful (有狀態) | Stateless (無狀態) |
|---|---|---|
| 狀態保持 | 維持客戶端會話狀態 | 不保存會話狀態 |
| 實例關聯 | 專屬實例綁定客戶端 | 實例池共享,請求隨機分配 |
| 擴展性 | 較差 (實例佔用資源) | 極佳 (少量實例服務大量客戶) |
| 適用場景 | 購物車、多步精靈、對話式流程 | 查詢服務、工具方法、無狀態業務 |
Entity Bean 實例 = 資料庫記錄/視圖,支援關聯導航。

| 領域對象 | EJB 類型 | 選型理由 |
|---|---|---|
| Customer / Order / Product / OrderLineItem | Entity Bean (CMP) | 永久持久化資料,需資料庫映射,關聯導航 |
| Cart / CartLineItem | Stateful Session Bean | 屬於特定客戶會話,多步操作需維持狀態 |
| Pricer (估價器) | Stateless Session Bean | 無狀態計算邏輯,多購物車/訂單共享,高併發 |
| OrderProcessor (訂單處理器) | Message-Driven Bean | 異步驅動:信用卡驗證、郵件通知、狀態持久化 |
理解三大 Bean 本質定位,才能在微服務時代做正確的技術選型與遷移決策。