Spring事务管理(一)
来源:互联网 发布:淘宝试用卖家不发货 编辑:程序博客网 时间:2024/06/05 03:03
事务的理解
存在于一个事务中的方法,要么全部执行成功提交COMMIT,要么其中一个发生异常失败,事务中所有已经执行的方法都将回滚ROLLBACK。
术语ACID:原子性(Atomic)、一致性(Cosistent)、隔离性(Isolate)、持久性(Durable)。
Spring事务管理器
Spring提供了多种事务管理器,可以支持多种使用场景。现只列举两个比较常用的事务管理器:JDBC事务、Hibernate事务。
事务管理器
使用场景
org.springframework.
jdbc.datasource.DataSourceTransactionManager
用于Spring对JDBC抽象的支持;
也可用于mybatis进行持久化
org.springframework.
orm.hibernate4.HibernateTransactionManager
用于Hibernate4进行持久化(可以支持Hibernate多种版本)
……
……
声明式事务
Spring对声明式事务的支持是通过Spring AOP框架实现的。
声明式事务主要的两大实现方式: Spring的tx命名空间 和 @Transactional注解。
1.Spring的tx命名空间
<!-- 配置声明式事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 定义AOP通知 --> <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" rollback-for="java.lang.RuntimeException"/> <tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.RuntimeException"/> <tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.RuntimeException"/> <tx:method name="update*" propagation="REQUIRED" rollback-for="java.lang.RuntimeException"/> <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.RuntimeException"/> <tx:method name="remove*" propagation="REQUIRED" rollback-for="java.lang.RuntimeException"/> <tx:method name="create*" propagation="REQUIRED" rollback-for="java.lang.RuntimeException"/> <tx:method name="get*" read-only="true" /> <tx:method name="find*" read-only="true" /> <tx:method name="load*" read-only="true" /> <tx:method name="query*" read-only="true" /> <tx:method name="datagrid*" read-only="true" /> <tx:method name="*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <aop:config> <!--只对action层实施事务控制--> <aop:pointcut id="transactionPointcut" expression="(execution(* com.duts..*.action..*ActionImpl.*(..)))" /> <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" /> </aop:config>解析:propagation:定义事务的传播规则;回滚规则rollback-for:指定事务对于哪些异常需要回滚而不提交(no-rollback-for:指定事务对于哪些异常不需要回滚继续运行)。具体的参数说明请参考API文档。
2.注解驱动的事务
<tx:annotation-driven />
只需要一行XMl配置即可。Spring会检查上下文中所有的Bean并查找使用@Transactional注解的bean,不管这个注解是用在类级别上还是方法级别上。对于每个使用@Transactional注解的Bean,<tx:annotation-driven />会自动为其添加事务通知。
注解在Action中的使用:
@Transactionalpublic class TestActionImpl implements ITestAtion {@Transactionalpublic void saveData(){......}}
在class类上使用事务注解,表示该类中的所有public方法都支持事务。在method方法上使用事务注解,标识该方法是一个事务方法。
0 0
- Spring事务管理一:Spring事务管理的优点
- Spring事务管理(一)
- spring事务管理(一)
- spring中的事务管理(一)
- Spring之事务管理(一)
- 【Spring学习笔记】Spring事务管理(一)
- 学习Spring的事务管理(一)
- spring拦截器中的事务管理(一)
- Spring事务管理(详解+实例)一
- 开发问题一:spring的事务管理问题
- Spring 事务管理(一)
- Spring事务管理(一)什么是事务?
- 事务以及Spring中的事务管理一
- 事务管理之Spring事务管理
- 事务管理(一)事务管理基本概念
- Spring学习总结(六)---Spring事务管理(一:事务回顾)
- Spring事务管理
- spring事务管理
- 自动检测字符串类型-chardet介绍
- android xml中转义字符的使用
- Java总结篇系列:Java泛型
- 【安卓学习之第三方库】库的使用2-jar类库的使用(以dom4j为例)和升级(以极光推送为例)
- 纯CSS绘制箭头
- Spring事务管理(一)
- margin在标准文档流下在竖直方向的塌陷现象。
- 【MyBatis框架】SqlMapConfig剖析
- pow2gt函数
- Qlabel 自定义鼠标点击事件以及文本样式效果设计
- RPM使用方法
- Android Studio报错 Error: A library uses the same package as this project:
- malloc、calloc和realloc区别
- Is Subsequence