欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring对Hibernate事务管理的配置

程序员文章站 2022-03-05 09:53:47
...
声明式事务配置主要分以下几步:

声明式事务配置

•配置事务管理器;
•事务的传播特性;
•那些类那些方法使用事务。
<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子类),普通异常是不会滚的。
相关标签: 事务