面對 Spring、EJB、Hibernate、iBATIS、Struts、JSF、Jdon 等琳瑯滿目的框架,如何依專案特質選型?本文從「高質量系統標準(解耦為核心)」出發,按表現層、業務邏輯層、持久層三層拆解,分析各框架誕生背景、解決什麼痛點、適用什麼場景,並給出三維決策矩陣(靈活性/快速構建/可伸縮性)與詳細對比表。
解耦性(鬆耦合) 是首要標準,兼顧可伸縮性、效能、開發效率。三層最小切分:表現層 / 業務服務層 / 持久層。
| 階段 | 痛點 | 解決方案 | 代表框架 |
|---|---|---|---|
| JSP 嵌入 Java | 空指針難定位、邏輯視圖混雜 | MVC 分離 | 原生 Servlet/JSP |
| MVC 手工實現 | View-Controller 結合麻煩、效率低 | ActionForm 自動綁定 | Struts |
| Struts ActionForm 死板 | 一表單一 Form、組件復用難 | 組件化 UI、聲明式綁定 | JSF, Tapestry |
可伸縮性剛需? 若未來需多機分布、7×24 高可用、故障隔離 → EJB(重量級但功能全)。
單機/少量節點? Spring/HiveMind/Jdon(輕量級)更簡潔。
靈活性極致追求? IoC/AOP 管理框架自身組件(HiveMind/Jdon)> 僅管理應用組件。
快速構建? Spring 全棧(MVC+JDBC Template+事務)或 Jdon(約定優於配置、自動裝配)。
新增表對比:Jdon 僅需 5 行參數化 SQL;Hibernate 需映射文件、關聯配置、Session 管理。
| 維度 | EJB 3 | Spring | Jdon |
|---|---|---|---|
| 靈活性 | 中(應用 POJO) | 高(細粒度 Bean) | 極高(框架組件也可插拔) |
| 功能完整 | 全(含分布式/異步) | 全(自帶 MVC/持久模板) | 基礎完整(表現借 Struts) |
| 可伸縮 | 原生分布式 | 需整合 EJB | 可無縫整合 EJB |
| 開發效率 | 學習曲線陡 | 中等(現成範例多) | 高(約定優於配置) |
| 適用規模 | 中大型 | 中小型 | 中小型,可擴展 |
無論選哪套,快取策略(本地/分散式)、連接池、查詢優化都必須納入架構設計,不可事後補救。