暗中观察

spring transaction 事务知识点
事务简介Spring事务管理主要包括3个接口,Spring的事务主要是由他们三个共同完成的。1)PlatformT...
扫描右侧二维码阅读全文
10
2018/09

spring transaction 事务知识点

spring-transaction.png

事务简介

Spring事务管理主要包括3个接口,Spring的事务主要是由他们三个共同完成的。

1)PlatformTransactionManager:事务管理器--主要用于平台相关事务的管理

commit 事务提交;
rollback 事务回滚;
getTransaction 获取事务状态。

2)TransactionDefinition:事务定义信息--用来定义事务相关的属性,给事务管理器PlatformTransactionManager使用

getIsolationLevel:获取隔离级别;
getPropagationBehavior:获取传播行为;
getTimeout:获取超时时间;
isReadOnly:是否只读(保存、更新、删除时属性变为false--可读写,查询时为true--只读)

事务管理器能够根据这个返回值进行优化,这些事务的配置信息,都可以通过配置文件进行配置。

3)TransactionStatus:事务具体运行状态--事务管理过程中,每个时间点事务的状态信息。

hasSavepoint():返回这个事务内部是否包含一个保存点,
isCompleted():返回该事务是否已完成,也就是说,是否已经提交或回滚
isNewTransaction():判断当前事务是否是一个新事务

一、事务基本属性

spring-transaction-definition.png

二、事务特性

spring-acid.png

三、事务传播行为

spring-transaction-propagation.png

四、事务隔离级别

spring-transaction-isolation.png
spring-transaction-isolation-problem.png

五、事务分类

Spring提供了对编程式事务和声明式事务的支持,编程式事务允许用户在代码中精确定义事务的边界,而声明式事务(基于AOP)有助于用户将操作与事务规则进行解耦。
简单地说,编程式事务侵入到了业务代码里面,但是提供了更加详细的事务管理;而声明式事务由于基于AOP,所以既能起到事务管理的作用,又可以不影响业务代码的具体实现。

编程式事务:
TransactionTemplate
spring-transaction-bc1.png

PlatformTransactionManager
spring-transaction-bc.png

声明式事务
1.第一种方式:每个Bean都有一个代理
2.所有Bean共享一个代理基类
3.使用拦截器
4.使用tx标签配置的拦截器
5.全注解

声明式事务的优缺点:
优点:
不需要在业务逻辑代码中编写事务相关代码,只需要在配置文件配置或使用注解(@Transaction),这种方式没有侵入性。
缺点:
声明式事务的最细粒度作用于方法上,如果像代码块也有事务需求,只能变通下,将代码块变为方法。

参考

http://www.blogjava.net/robbie/archive/2009/04/05/264003.html
https://blog.csdn.net/trigl/article/details/50968079

Last modification:September 11th, 2018 at 08:03 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment