| 特性 | 原理 | 作用 |
|---|---|---|
| IOC (控制反轉) | 容器管理 Bean 生命週期,底層反射實例化 | 解耦依賴,配置化裝配 |
| AOP (面向切面) | 動態代理(JDK/CGLIB)攔截連接點 | 事務、日誌、安全、監控等橫切關注點複用 |
| 維度 | Hibernate | MyBatis |
|---|---|---|
| SQL 控制 | 自動生成 HQL/SQL,不可控 | 手寫 SQL,完全可控,易優化 |
| 跨數據庫移植 | 方言適配自動生成,移植性強 | 需針對不同庫寫方言 SQL,移植性弱 |
| 查詢效率 | 全字段查詢/更新,有性能損耗 | 按需選列,性能優 |
| 學習曲線 | 較陡(HQL、映射、緩存機制) | 平緩(SQL 即映射) |
| 適用場景 | 標準 CRUD、快速開發、團隊 SQL 水平一般 | 複雜查詢、高性能要求、DBA 主導優化 |
| 項目 | Spring MVC | Struts2 |
|---|---|---|
| 入口 | DispatcherServlet(Servlet) | Filter(StrutsPrepareAndExecuteFilter) |
| 開發模式 | 方法級(一個 URL 對應一個方法) | 類級(一個 Action 類處理多方法) |
| 參數綁定 | 方法參數直接綁定,支持單例 | 屬性驅動,必須多例(線程安全) |
| 數據傳遞 | ModelAndView + Request 域 | ValueStack (OGNL) 存取 |
| 視圖解析 | 默認 JSTL,靈活擴展 | JSP/Velocity/FreeMarker |