Spring对Hibernate事务管理的配置

本文详细介绍了Spring中声明式事务的配置步骤,包括事务管理器的配置、事务传播特性的设定及具体应用到哪些类和方法。通过XML配置示例展示了如何针对不同类型的数据库操作设置不同的事务属性。

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

声明式事务配置主要分以下几步:

声明式事务配置

•配置事务管理器;
•事务的传播特性;
•那些类那些方法使用事务。
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>

<!-- 配置事务的传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="register*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="*lock*" propagation="REQUIRED" />
<tx:method name="reset*" propagation="REQUIRED" />
<!-- 将save、delete、modify开头的事务之外的事务全部设置 为只读事务,这样也可以在一定程序上提高系统性能 -->
<tx:method name="find*" read-only="true"/>
<tx:method name="get*" read-only="true"/>
<tx:method name="query*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置那些类的那些方法参与事务 -->
<aop:config>
<!-- <aop:pointcut>标签指的是一个范围 -->
<aop:pointcut id="allMagangerMethod" expression="execution(* com.chinaGPS.song.dao.base.BaseService.*(..))" />
<aop:pointcut id="allMagangerMethod1" expression="execution(* com.chinaGPS.song.service.impl.*ServiceImpl.*(..))" />
<aop:pointcut id="allMagangerMethod2" expression="execution(* com.chinaGPS.song.service.*Service.*(..))" />

<!-- <aop:advisor>标签相当于Aspect -->
<aop:advisor pointcut-ref="allMagangerMethod" advice-ref="txAdvice" />
<aop:advisor pointcut-ref="allMagangerMethod1" advice-ref="txAdvice" />
<aop:advisor pointcut-ref="allMagangerMethod2" advice-ref="txAdvice" />
</aop:config>


这时候我们就可以在我们业务逻辑层用HibernateTemplate里面提供的数据操作方法来编写我们的业务逻辑方法了,当然我们的方法必须要是以我们事务配置里面配置的一样,用save,delete,update,get,register*,modify*,*lock*等等。做我们的方法的开头。需要注意的是,默认情况下运行期异常才会回滚(包括继承了RuntimeException子类),普通异常是不会滚的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值