SSH(Struts2 + Spring + Hibernate)雖屬上一代技術棧,但其設計思想(MVC、IOC/AOP、ORM)仍是現代框架基石。本文彙總三大框架 高頻面試題、原理解析、整合要點,助你快速構建完整知識體系。
hibernate.cfg.xml 配置SessionFactorySessionTransaction| 版本 | 支援範圍 |
|---|---|
| Hibernate 2 | 實體對象、集合 |
| Hibernate 3+ | + 屬性級延遲 |
原理:代理對象攔截方法調用,首次訪問觸發 SQL 查詢。
<many-to-one>:多對一(關聯擁有方)<one-to-many>:一對多(被關聯方,配合 inverse="true")<many-to-many>:多對多(中間表)二級緩存適用條件:低頻修改、非關鍵、可接受臟讀、高頻讀取。
createSQLQuery)ActionServlet(Struts 1)或 StrutsPrepareAndExecuteFilter(Struts 2)struts.xml 映射配置ActionMappingAction 屬性(Struts 2 模型驅動)Action.execute() 業務邏輯Result(視圖跳轉、JSON、流…)Struts 2 Action 多實例(原型模式)天然線程安全;Struts 1 Action 單例需避免實例變量。
ActionName-validation.xml 配置規則Validateable 接口重寫 validate()DispatcherServlet 統一入口HandlerMapping 定位 ControllerModelAndViewViewResolver 解析視圖singleton(默認)、prototype、request、session、application@Transactional 替代編程式LocalSessionFactoryBean 暴露 SessionFactoryHibernateTransactionManager 綁定事務OpenSessionInViewFilter 解決延遲加載異常HibernateDaoSupport 或注入 SessionFactoryapplicationContext.xml 配置 DataSource + SessionFactory(推薦,統一事務)hibernate.cfg.xml 直連(輕量、無 Spring 事務)context.xml 定義 DataSource,Spring/Hibernate 通過 JNDI 查找(生產環境推薦,連接池由容器管理)| 維度 | 悲觀鎖 | 樂觀鎖 |
|---|---|---|
| 原理 | DB 行鎖 | 版本號/時間戳 |
| 隔離級別 | 依賴 DB | 應用層實現 |
| 並發性能 | 低 | 高(推薦) |
| Hibernate 配置 | LockMode.UPGRADE | <version> + optimistic-lock="all" |
fileUpload 攔截器 + Action 定義 File myFile, String myFileFileName, String myFileContentType + 限制大小/類型參數join fetch、batch-size、@BatchSize、二級緩存@Transactional 2) 方法非 public 3) 異常被捕獲未拋出 4) 數據源未綁定事務管理器 5) 自調用繞過代理SSH 面試核心在于 三大框架各自原理 與 整合關鍵點 的融會貫通。建議複習路徑:
Hibernate 狀態/緩存/優化 → Struts2 攔截器/值棧/驗證 → Spring IOC/AOP/事務/整合 → 並發/事務/異常排查。
理解設計模式在框架中的落地(模板方法、代理、工廠、觀察者),比背誦 API 更有價值。