Spring3 配置Hibernate事物管理

xiaoxiao2021-03-01  28

1、直接代码如下:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 此处省略N个字。。。。。 <!-- 事务处理器 --> <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true"></tx:method> <tx:method name="find*" read-only="true"></tx:method> <tx:method name="login" read-only="true"></tx:method> <tx:method name="save*" rollback-for="Exception"></tx:method> <tx:method name="edit*" rollback-for="Exception"></tx:method> <tx:method name="del*" rollback-for="Exception"></tx:method> </tx:attributes> </tx:advice> <aop:config> <aop:pointcut expression="execution(* edu.wanghuan.hrm.services.impl.*.*(..))" id="serviceMethod"/> <aop:advisor advice-ref="transactionAdvice" pointcut-ref="serviceMethod"/> </aop:config> </beans>

 2、解释

 

       要点一:execution(* com.hisun.mvc.service..*.*(..))"中几个通配符的含义:第一个 * —— 通配 任意返回值类型第二个 * —— 通配 包com.hisun.mvc.service下的任意class第三个 * —— 通配 包com.hisun.mvc.service下的任意class的任意方法第四个 .. —— 通配 方法可以有0个或多个参数综上:包com.hisun.mvc.service下的任意class的具有任意返回值类型、任意数目参数和任意名称的方法。

 

        要点二:<tx:advice/> 有关的设置

这一节里将描述通过 <tx:advice/> 标签来指定不同的事务性设置。默认的 <tx:advice/> 设置如下:

事务传播设置是 REQUIRED

隔离级别是 DEFAULT

事务是 读/写

事务超时默认是依赖于事务系统的,或者事务超时没有被支持。

任何 RuntimeException 将触发事务回滚,但是任何 checked Exception 将不触发事务回滚这些默认的设置当然也是可以被改变的。

       要点三:<tx:advice/> 和 <tx:attributes/> 标签里的 <tx:method/> 各种属性设置总结

属性是否需要默认值描述name是 

与事务属性关联的方法名。

通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:'get*'、'handle*'、'on*Event'等等。

propagation否REQUIRED事务传播行为isolation否DEFAULT事务隔离级别timeout否-1事务超时的时间(以秒为单位)read-only否false事务是否只读?rollback-for否 将被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException,ServletException' no-rollback-for否  被触发进行回滚的 Exception(s);以逗号分开。 如:'com.foo.MyBusinessException
转载请注明原文地址: https://www.6miu.com/read-3649958.html

最新回复(0)