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

Spring 3 + Hibernate 4 + Struts MVC 整合配置指南:數據源、SessionFactory 與事務管理

     編輯:Java 綜合教學

Spring 3 + Hibernate 4 + Struts MVC 整合配置指南:數據源、SessionFactory 與事務管理

本文記錄經典 SSM(Spring + Spring MVC + MyBatis/Hibernate)前身——Spring 3 整合 Hibernate 4 的核心 XML 配置,涵蓋數據源、SessionFactory、事務管理器與註解驅動,適用於維護舊專案或理解整合原理。

一、數據源配置

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost:3306/testroom?useUnicode=true&characterEncoding=UTF-8" />
    <property name="username" value="root" />
    <property name="password" value="root" />
</bean>
  • 使用 DBCP 連接池,生產環境建議換用 HikariCP/Druid。
  • URL 參數 useUnicode=true&characterEncoding=UTF-8 解決中文亂碼。

二、SessionFactory 配置

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.connection.autocommit">true</prop>
        </props>
    </property>
    <!-- 映射檔掃描 -->
    <property name="mappingResources">
        <list>
            <value>cn/lt/entity/User.hbm.xml</value>
            <value>cn/lt/entity/Questions.hbm.xml</value>
            <value>cn/lt/entity/fraction.hbm.xml</value>
        </list>
    </property>
</bean>
  • 注意:Hibernate 4 類全路徑為 org.springframework.orm.hibernate4.LocalSessionFactoryBean(原文誤寫為 hibernate3)。
  • hbm2ddl.auto=update 僅開發環境使用,生產嚴禁。
  • 映射檔也可用 packagesToScan 掃描實體類註解(@Entity),減少 XML 維護。

三、事務管理配置

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

<!-- 註解驅動事務 -->
<tx:annotation-driven transaction-manager="transactionManager" />
  • Service 層方法加 @Transactional 即可聲明式事務。
  • 傳播行為、隔離級別、超時、只讀等可在註解屬性細化。

四、完整 applicationContext.xml 骨架

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="https://www.springframework.org/schema/beans"
       xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="https://www.springframework.org/schema/tx"
       xsi:schemaLocation="...">

    <!-- 1. 數據源 -->
    <bean id="dataSource" ... />

    <!-- 2. SessionFactory -->
    <bean id="sessionFactory" ... />

    <!-- 3. 事務管理器 -->
    <bean id="transactionManager" ... />
    <tx:annotation-driven transaction-manager="transactionManager" />

    <!-- 4. DAO/Service 掃描 -->
    <context:component-scan base-package="cn.lt.dao, cn.lt.service" />

</beans>

五、常見問題與升級建議

問題解決/建議
Hibernate 版本不匹配Spring 3.x 對應 Hibernate 3/4,Spring 4+ 建議用 Hibernate 5,Spring Boot 2.x 直接 spring-boot-starter-data-jpa
映射檔維護繁瑣改用 JPA 註解(@Entity, @Table, @Column)+ packagesToScan
DBCP 性能瓶頸換用 HikariCP:com.zaxxer.hikari.HikariDataSource
Struts 2 整合struts2-spring-plugin 讓 Struts Action 由 Spring 管理,注入 Service

六、總結

Spring 管理 Hibernate 核心在於 LocalSessionFactoryBean 整合數據源與映射元數據,HibernateTransactionManager 綁定 Session 與事務邊界,tx:annotation-driven 啟用 AOP 織入。掌握這三個 Bean 的配置關係,即掌握了 SSM/H 整合的靈魂。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved