【知识整理】Spring整合Hibernate详解

本文介绍如何将Spring框架与Hibernate整合,实现使用Spring管理Hibernate的SessionFactory并应用Spring的声明式事务。主要内容包括添加必要的Jar包、配置数据源、配置SessionFactory、设置事务管理器以及配置事务属性。
一.spring整合Hibernate整合什么?
1.由IOC容器来管理Hibernate的sessionFactory

2.让Hibernate使用上spring的声明式事务

二.整合步骤:
1.加入Hibernate
(1)导入jar包
(2)添加Hibernate的配置文件
    1).数据源配置到IOC容器中,此处不需配置
    2).关联的.hbm.xml在IOC容器中配置SessionFactory实例时进行配置
    3).只需配置hibernate的基本属性:方言、sql显示及格式化、生成数据表的策略、二级缓存等

<hibernate-configuration>
    <session-factory>
    	<!-- 配置hibernate的基本属性 -->
    	<!-- 1.数据源配置到IOC容器中,此处不需配置 -->
    	<!-- 2.关联的.hbm.xml在IOC容器中配置SessionFactory实例时进行配置 -->
    	<!-- 只需配置hibernate的基本属性:方言、sql显示及格式化、生成数据表的策略、二级缓存等 -->
    	<property name="show_sql">true</property>
    	<property name="format_sql">true</property>
    	<property name="hbm2ddl.auto">update</property>
  	<!-- 配置hibernate二级缓存相关 -->
    	
    </session-factory>
</hibernate-configuration>
(3)编写持久化类对应的.hbm.xml文件
2.加入spring
(1)导入jar包
(2)添加spring的配置文件

<!-- 1.配置数据源 -->
<!-- 导入资源文件 -->
<util:properties id="config" location="classpath:config.properties"></util:properties>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="user" value="#{config.username}"></property>
	<property name="password" value="#{config.password}"></property>
	<property name="driverClass" value="#{config.driver}"></property>
	<property name="jdbcUrl" value="#{config.url}"></property>
	<property name="maxPoolSize" value="#{config.maxTotal}"></property>
	<property name="initialPoolSize" value="#{config.initialSize}"></property>	
</bean>
<!-- 2.配置hibernate的SessionFactory实例,通过spring提供的LocalSessionFactory进行配置 -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <!-- 配置数据源 -->
    <property name="dataSource" ref="dataSource"></property>
    <!-- 配置hibernate配置文件 -->
    <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
    <!-- 配置hibernate映射文件,允许使用通配符 -->
    <property name="mappingLocations" value="entity/*.hbm.xml"></property>
</bean>

<!-- 3.配置spring的声明式事务 -->
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
	<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置事务属性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
	<tx:attributes>
		<tx:method name="get*" read-only="true"/>
			tx:method name="*"/>
	</tx:attributes>
</tx:advice>
<!-- 配置事务切点,并把事务切点和事务属性关联 -->
<aop:config>
	<aop:pointcut expression="excution(* springHibernate.service.*.*(..))" id="txPointcut"/>
	<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值