
Transaction
君莫笑(๑˙ー˙๑)
欢迎互关,一起学习,共同进步
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring5 源码阅读笔记(4)事务:@EnableTransactionManagement 做了什么?
基于注解开始事务import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.jdbc.datasourc...原创 2020-03-04 10:47:45 · 299 阅读 · 0 评论 -
Spring5 源码阅读笔记(4.1)事务切面的 invoke
前置文章Spring5 源码阅读笔记(3.3)JDKDynamicAopProxy 的 invoke 调用Spring5 源码阅读笔记(4)事务:@EnableTransactionManagement 做了什么?当我们执行一段打了 @Transactional 的代码时,其实是会走到 JDKDynamicAopProxy 的 invoke 方法的(如果用的是 JDKDynamicAopP...原创 2020-03-06 11:36:49 · 289 阅读 · 0 评论 -
Spring5 源码阅读笔记(4.1.1)createTransactionIfNecessary(tm, txAttr, joinpointIdentification) 创建事务如有必要
protected TransactionInfo createTransactionIfNecessary(@Nullable PlatformTransactionManager tm, @Nullable TransactionAttribute txAttr, final String joinpointIdentification) { // If no name specifi...原创 2020-03-05 20:15:08 · 599 阅读 · 0 评论 -
Spring5 源码阅读笔记(4.1.1.1)doGetTransaction() 拿事务对象
重点我们通常说的事务对象,就是这里的 DataSourceTransactionObject。说起事务,必然是和连接绑定的,DataSourceTransactionObject 主要是管理连接对象。doGetTransaction() 主要做了:创建一个事务对象 DataSourceTransactionObject拿到数据源,根据当前线程拿到从该数据源拿到的连接对象 Connect...原创 2020-03-05 18:07:18 · 647 阅读 · 0 评论 -
Spring5 源码阅读笔记(4.1.1.2)handleExistingTransaction(definition, transaction, debugEnabled) 处理存在的事务
每当进入事务切面,Spring 在创建事务的时候都会先新建一个事务对象 DataSourceTransactionObject,见 Spring5 源码阅读笔记(4.1.1.1)doGetTransaction() 拿事务对象。这个事务对象里面有一个 ConnectionHolder,并且这个连接不是新的,newTransaction 为 false。当然,这是默认值,ConnectionHold...原创 2020-03-05 20:12:10 · 488 阅读 · 0 评论 -
Spring5 源码阅读笔记(4.1.1.3)doBegin(transaction, definition) 开启事务
Spring5 源码阅读笔记(4.1.1)createTransactionIfNecessary(tm, txAttr, joinpointIdentification) 创建事务如有必要 讲述了创建事务的过程:首先,创建事务对象,Spring5 源码阅读笔记(4.1.1.1)doGetTransaction() 拿事务对象然后,判断是否已经有活跃的连接,如果有,Spring5 源码阅读笔记...原创 2020-03-05 20:30:20 · 709 阅读 · 0 评论 -
Spring5 源码阅读笔记(4.1.2)completeTransactionAfterThrowing(txInfo, ex) 回滚事务
重点在当前事务回滚的过程中,会先做2个判断:一、如果传播方式是 PROPAGATION_NESTED,当前事务按照按照回滚点回滚。由于当前事务在回滚后会抛出异常,外层事务捕获到异常后也会回滚。二、如果 newTransaction 为true,也就是当前事务是最外层事务,或传播方式是 ROPAGATION_REQUIRES_NEW,回滚。其它情况,会在更外层的事务回滚。跟源码类 Tr...原创 2020-03-06 11:36:18 · 794 阅读 · 0 评论 -
Spring5 源码阅读笔记(4.1.3)commitTransactionAfterReturning(txInfo) 提交事务
重点事务回滚的时候,要先判断 newTransaction 的状态,newTransaction 为 true,才提交。当传播方式为 PROPAGATION_REQUIRED:内层事务会使用外层事务的连接,newTransaction 为 false,内层事务在提交的时候不会提交,最后由外层事务提交。当传播方式为 PROPAGATION_REQUIRES_NEW:内层事务创建新连接,ne...原创 2020-03-06 10:55:30 · 1201 阅读 · 0 评论 -
Spring5 源码阅读笔记(4.2)编程式事务 TransactionTemplate
注解式事务的不足当方法执行的时间过长,方法里的某些操作并不需要被包括在事务内的时候,用 @Transactional 就不太好了。因为事务一直得不到提交或回滚会一直占用连接。编程式事务@Autowiredprivate TransactionTemplate transactionTemplate;public void method() { Integer execute...原创 2020-03-08 20:45:38 · 277 阅读 · 0 评论