Spring:企業級開發的基石
Spring 以輕量級容器、IOC(控制反轉)與AOP(面向切面程式設計)確立了不可撼動的地位。核心優勢在於:
- 應用解耦:透過 Bean 設定檔管理依賴關係,Action、DAO、Service 等層級鬆耦合。
- 聲明式事務:AOP 最常見應用,配合 Ehcache 等快取方案提升效能。
- 整合中心:無縫整合 Hibernate、iBatis、Struts、JSF 等主流框架。
雖然 Spring MVC 存在,但受限於 Struts 1/2、WebWork 等視圖層框架的先發優勢,推廣程度有限。
Hibernate:ORM 領域的經典之作
解決物件導向與關聯式資料庫的阻抗失配問題:
- 自動生成 SQL,開發者專注於 HQL/物件操作。
- IDE(如 MyEclipse)可自動生成 POJO 與映射檔,大幅降低樣板碼。
- 二級快取機制(配合 Ehcache)有效減輕資料庫壓力。
適用場景:資料庫設計規範、標準 CRUD 為主、團隊熟悉 ORM 概念的專案。
iBatis:SQL 掌控者的選擇
相對 Hibernate 的「全自動」,iBatis 採用半自動映射:
- 開發者手寫 SQL,擁有完全控制權,適合複雜查詢、存儲過程、效能調優。
- 學習曲線平緩,XML 映射檔直觀易懂。
- 對資料庫設計不友善(如欄位命名不規範)的舊系統遷移極為友好。
經典組合:Struts + iBatis + Spring,許多中型專案的首選(如巧手專案)。
Struts:MVC 實作的行業標準
雖非完美,但確立了 Java Web 開發的事實標準:
- 多模組配置檔支援大型專案維護。
- 內建表單驗證(
validate())與豐富標籤庫。
- 與 Spring、Hibernate 整合成熟,文檔社群資源最豐富。
其他框架簡評
- JSF:組件化思想超前,但早期版本複雜度高,學習曲線陡峭。
- Struts 2 / WebWork:攔截器機制靈活,動作類即 POJO,漸成主流選擇。
架構選型建議
| 專案特徵 | 推薦組合 |
| 標準化資料庫、快速開發、團隊熟悉 ORM | Struts + Hibernate + Spring (SSH) |
| 複雜 SQL、舊系統遷移、需精細控制 SQL | Struts + iBatis + Spring |
| 新專案、追求現代化、RESTful API | Spring MVC + MyBatis + Spring Boot |