type
status
date
slug
summary
tags
category
icon
password
1、事务原理
Spring底层默认使用哪个事务管理器?默认使用JdbcTransactionManager;
原理:
1、事务管理器:TransactionManager;控制提交和回滚
2、事务拦截器:TransactionInterceptor:控制何时提交和回滚
completeTransactionAfterThrowing(txInfo, ex);
在这个时候回滚
commitTransactionAfterReturning(txInfo);在这个时候提交
2.事务细节
2.1 timeout
timeout(同timeoutstring》:超时时间,事务超时,秒为单位;
一旦超过约定时间,事务就会回滚。
超时时间是指:从方法开始,到最后一次数据库操作结束的时间。
2.2 readonly
如果该操作只读的话,开启事务的只读来优化。
2.3 rollbackFor
rollbackFor(同rollbackForClassName):指明哪些额外异常需要回滚。不是所有异常都一定引起事务回滚。
异常:
运行时异常(uncheckedexception【非受检异常】)
编译时异常(checkedexception【受检异常】)
回滚的默认机制:
运行时异常,回滚
编译时异常,不回滚
可以指定哪些异常需要回滚:
回滚=运行时异常+指定回滚异常
2.4 noRollbackFor
noRollbackFor(同noRollbackForClassName),指明哪些额外异常不需要回滚。
不回滚 =编译时异常 +指定不回滚异常
2.5 其他重要细节
propagation:传播行为
isolation:隔高级别
3.isolation:隔高级别


REPEATABLE_READ:可重复读。快照读。MySQL默认
READ_COMMITTED:读已提交。当前读。Oracle默认
4.propagation:传播行为

- Author:Blinky
- URL:http://preview.tangly1024.com/article/1d71c0db-37a0-80cd-8c62-ecee266c9529
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!