Spring事务管理
来源:互联网 发布:java自学书籍知乎 编辑:程序博客网 时间:2024/06/13 15:33
一、Spring事务管理
1.1 spring事务的底层实现
通过配置文件配置事务的详细信息,spring将其封装到对象TransactionDefinition ,通过事务管理器的getTransaction()方法,可以获得事务的状态TransactionStatus,就可以对事物进行进一步操作。
1.2 spring事务操作
spring的事务操作包括:配置事务详细(增强,通知等),配置事务管理器,使用AOP确定切入电
1.3 spring事务详细定义对象Transac tionDefinition
对事务详细设置:传播行为、隔离级别、超时、是否只读。
1、 传播行为:两个被事务管理的方法相互调用的问题
* 两个方法之间共享事务分类 种类 PROPAGATION_REQUIRED:required ,默认值,支持当前事务。如果A方法已经在事务中,B将直接使用。如果没有将创建新事物。(删除订单时,也删除订单明细) 如果A方法已经在事务中,B将直接使用。如果没有将以非事务状态执行。 PROPAGATION_MANDATORY:mandatory,支持当前事务。如果A方法没有事务,将抛异常。 PROPAGATION_REQUIRES_NEW:requires_new ,将创建新的事务,如果A方法已经在事务中,将A事务挂起。(例如: 生成订单, 发送通知邮件, 通知邮件会创建一个新的事务,如果邮件失败, 不影响订单生成) PROPAGATION_NOT_SUPPORTED,not_supported,不支持当前事务,总是以非事务状态执行。如果A方法已经在事务中,将挂起。 PROPAGATION_NEVER,never,不支持当前事务,如果A方法在事务中,将抛异常。 PROPAGATION_NESTED,nested,嵌套事务,底层将使用Savepoint形成嵌套事务常见:PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW、PROPAGATION_NESTED
2、事务状态
isNewTransaction 是否时新事务
hasSavepoint 是否有保存点,嵌套
setRollbackOnly 设置回滚
isRollbackOnly 是否回滚
flus() 刷新
isCompleted()是否完成
1.4 spring事务管理的编程方式
事务管理器读取事务定义信息,从而得到事务状态,再根据事务执行的状态,决定事务是回滚还是提交
事务管理器:
DataSourceTransactionManager JDBC事务管理
HibernateTransactionManager hibernate事务管理
<!--配置事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property></bean><!-- 配置事务行为 --><tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <!-- 传播行为 --> <tx:method name="save*" propagation="REQUIRED" /> <tx:method name="insert*" propagation="REQUIRED" /> <tx:method name="delete*" propagation="REQUIRED" /> <tx:method name="update*" propagation="REQUIRED" /> <tx:method name="find*" propagation="SUPPORTS" read-only="true" /> <tx:method name="get*" propagation="SUPPORTS" read-only="true" /> </tx:attributes></tx:advice><!-- 事务行为与切面整合 --><aop:config> <!--切点表达式,表示该包下所有类,所有返回值的方法都进行事务管理--> <aop:pointcut expression="execution(* cn.lx.springmvc.service.impl.*.*(..))" id="pointcut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" /></aop:config>
0 0
- 事务管理之Spring事务管理
- Spring事务管理
- spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring事务管理
- Spring 事务管理
- Spring事务管理
- spring 事务管理
- spring 事务管理
- spring 事务管理
- spring事务管理
- Spring 事务管理
- Spring事务管理
- spring事务管理
- spring 事务管理
- Zookeeper.NET Client (一)【自己编写客户端 连接实例】
- Android动画Animation
- CSS3 url()语法 绝对路径问题
- C++多重继承
- 2016 Multi-University Training Contest 3 Sqrt Bo
- Spring事务管理
- HDU 5084/BC 15C HeHe
- [转]博弈知识汇总
- android之selector
- iOS 最新版 CocoaPods 的安装流程
- C语言控制台注册登录 选择功能案例
- 1-Getting Started
- c#学习——一种List快速排序方法
- uboot编译学习----直接打完整个补丁后执行make,提示编译失败