首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

SSH 架構精要:Struts + Spring + Hibernate 分層職責與呼叫鏈路速查

     編輯:Java 程式設計入門

SSH(Struts2 + Spring + Hibernate)曾長期統治 Java EE 輕量級開發,掌握三框架分層職責與物件流向,是維護既有專案、面試通關的必備基本功。

分層職責速查表

框架層級核心職責關鍵元件
StrutsWeb 表現層接收請求、參數綁定、驗證、分派業務、轉向視圖Action、ActionForm/DTO、struts.xml、攔截器、結果類型
Spring業務服務層Bean 容器管理、AOP 切面(事務/安全/日誌)、DAO 整合、資源抽象Service/Manager、@Transactional、ApplicationContext、JdbcTemplate/HibernateTemplate
Hibernate持久化層OR Mapping、Session 管理、快取(一級/二級/查詢)、HQL/Criteria、延遲載入Entity (POJO)、.hbm.xml/Annotation、DAO、SessionFactory

標準呼叫鏈路

JSP → Action → Service → DAO → Hibernate → DB
      ↑         ↑        ↑
   參數封裝   事務邊界  ORM操作

資料流向細節

  1. 請求入口:表單提交 → ActionForm/DTO 自動注入參數。
  2. Action 處理:從 Form 取值 → 組裝 VO/PO → 呼叫 Service 介面。
  3. Service 業務:開啟事務(聲明式) → 協調多 DAO → 回傳結果/異常回滾。
  4. DAO 持久:使用 HibernateTemplate 或原生 Session 執行 CRUD/HQL。
  5. 回應輸出:Action 將結果放入 Request/Session → result 轉向 JSP 渲染。

Spring 整合 Hibernate 關鍵配置

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="packagesToScan" value="com.example.entity"/>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<tx:annotation-driven transaction-manager="transactionManager"/>

常見誤區提醒

  • Action 直接操作 Hibernate Session(破壞分層、事務管理失控)。
  • Service 層無介面,直接具體類注入(難以 AOP 代理、單元測試困難)。
  • 濫用 OpenSessionInView 掩蓋延遲載入問題,導致資料庫連線長期佔用。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved