Struts、Spring、Hibernate 分層職責
經典 SSH 框架將企業級應用劃分為三層,各司其職:
1. Struts — 表現層 (Web Layer)
- ActionFormBean:接收頁面表單提交數據,自動封裝。
- Action:處理業務邏輯入口,調用 Service 層,最後轉發到對應視圖 (JSP)。
- 配置於
struts-config.xml,由 ActionServlet 統一調度。
2. Spring — 業務層
- 為 Action 提供統一調用接口,封裝持久層 DAO。
- 編寫具體業務邏輯方法。
- 統一管理 JavaBean 生命週期與依賴注入 (IoC)。
- 聲明式事務管理,無需硬編碼事務代碼。
- 無縫整合 Hibernate,簡化 Session/Transaction 管理。
3. Hibernate — 持久層
- 提供 ORM (Object-Relational Mapping) 映射。
- 通過
.hbm.xml 映射文件與 POJO 類對應資料庫表。
- 定義 DAO 接口/實現類,封裝 CRUD 操作,直接操作 PO (持久化對象)。
對象調用與數據流向
調用鏈:JSP → Action → Service → DAO → Hibernate
數據流:
ActionFormBean 接收用戶輸入。
- Action 從 FormBean 取出數據,封裝為 VO (Value Object) 或 PO。
- 調用 Service Bean 執行業務邏輯。
- Service 持有 DAO 引用,調用 DAO 方法進行持久化操作。
- Hibernate 完成資料庫交互,返回結果層層回傳,最終 Forward 到 JSP 渲染。
架構優勢
- 關注點分離:表現、業務、持久邏輯解耦。
- 易測試:各層可獨立單元測試。
- 可維護:修改某層不影響其他層。
- 事務統一:Spring AOP 統一管理事務邊界。
現代視角提示
雖然 SSH 曾是企業級開發標配,但現代開發更傾向 Spring Boot + Spring MVC + MyBatis/JPA,配置更簡化、啟動更快、更適合微服務與雲原生部署。理解 SSH 歷史演進有助於把握現代框架設計精髓。