Spring之整合Hibernate

本文详细介绍如何在Spring框架中整合Hibernate,包括两种方式:一是引入Hibernate配置文件,二是由Spring直接管理Hibernate配置。涵盖数据源配置、DAO开发简化、事务管理器配置及注解式事务开启等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、在Spring的配置文件中,引入Hibernate的配置文件

1.引入Hibernate的配置信息(为其创建sessionFactory)

	<!-- 引入Hibernate的配置的信息 -->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<!-- 引入hibernate的配置文件 -->
		<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
	</bean>

2.引入Hibernate的模板类简化Hibernate开发(Spring已经为我们提供)

(1)改写DAO继承HibernateDaoSupport(该类中已经存在setSessionFactory方法,因此只需要注入sessionFactory)

    public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
        @Override
        public void save(User User) {
            this.getHibernateTemplate().save(user);
        }
    }

(2)在DAO中注入SessionFactory

    <!-- 配置DAO -->
    <bean id="userDao" class="com.mark.demo.userDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

3.配置事务管理器(这里使用了注解式)

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <!-- 开启注解事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

4.最终版本

<beans>
        <!-- Spring整合Hibernate方式一 -->
    <!-- 引入Hibernate的配置的信息 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 引入hibernate的配置文件 -->
        <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
    </bean>

    <!-- 配置DAO -->
    <bean id="userDao" class="com.mark.demo.userDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <!-- 开启注解事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

  二、不引入hibernate配置文件(将hibernate的配置交给Spring管理)

1.数据源交给Spring(db.properties/连接池/实体数据库映射文件)

    <beans> 
            <!-- Spring整合Hibernate方式二 -->
        <!-- 加载数据库配置文件 -->
        <context:property-placeholder location="classpath:db.properties" />
        <!-- 配置连接池-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClass}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </bean>

        <!-- 引入Hibernate的配置的信息-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <!-- 注入连接池 -->
            <property name="dataSource" ref="dataSource"/>
            <!-- 配置Hibernate的相关属性 -->
            <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>
                </props>
            </property>
		
            <!-- 设置映射文件 -->
            <property name="mappingResources">
                <list>
                    <value>com/mark/demo/domain/User.hbm.xml</value>
                </list>
            </property>
        </bean>
    </beans>

2.引入Hibernate的模板类简化Hibernate开发(Spring已经为我们提供)

(1)改写DAO继承HibernateDaoSupport(该类中已经存在setSessionFactory方法,因此只需要注入sessionFactory)

    public class UserDaoImpl extends HibernateDaoSupport implements UserDao {
        @Override
        public void save(User User) {
            this.getHibernateTemplate().save(user);
        }
    }

(2)在DAO中注入SessionFactory

    <!-- 配置DAO -->
    <bean id="userDao" class="com.mark.demo.userDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

3.配置事务管理器(这里使用了注解式)

    <!-- 配置事务管理器 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    <!-- 开启注解事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

4.最终版本

    <beans> 
            <!-- Spring整合Hibernate方式二 -->
        <!-- 加载数据库配置文件 -->
        <context:property-placeholder location="classpath:db.properties" />
        <!-- 配置连接池-->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="${jdbc.driverClass}"/>
            <property name="jdbcUrl" value="${jdbc.url}"/>
            <property name="user" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
        </bean>

        <!-- 引入Hibernate的配置的信息-->
        <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
            <!-- 注入连接池 -->
            <property name="dataSource" ref="dataSource"/>
            <!-- 配置Hibernate的相关属性 -->
            <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>
                </props>
            </property>
		
            <!-- 设置映射文件 -->
            <property name="mappingResources">
                <list>
                    <value>com/mark/demo/domain/User.hbm.xml</value>
                </list>
            </property>
        </bean>

        <!-- 配置DAO -->
        <bean id="userDao" class="com.mark.demo.userDaoImpl">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>

        <!-- 配置事务管理器 -->
        <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
        </bean>
        <!-- 开启注解事务 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
    </beans>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值