一、在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>