博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring - 事务之概述
阅读量:1996 次
发布时间:2019-04-27

本文共 1200 字,大约阅读时间需要 4 分钟。

一、Java事务导引

 

二、Spring事务核心接口

 

三、Spring事务属性定义

这里写图片描述

而TransactionDefinition接口内容如下:

public interface TransactionDefinition {    int getPropagationBehavior(); // 返回事务的传播行为    int getIsolationLevel();      // 返回事务的隔离级别,事务管理器根据它来控制另外一个事务可以看到本事务内的哪些数据    int getTimeout();             // 返回事务必须在多少秒内完成    boolean isReadOnly();         // 事务是否只读,事务管理器能够根据这个返回值进行优化,确保事务是只读的}

我们可以发现TransactionDefinition正好用来定义事务属性,下面详细介绍一下各个事务属性。

(1)传播行为(传送门 ):

(2)隔离级别(传送门 ):

 

四、Spring事务状态

 

五、代码

  1. 编程式 
  2. 声明式 
  3. 总结

 

六、Spring 事务原理机制(传送门 )

 

七、Spring事务 & 数据库事务联系

本质上其实是同一个概念,spring的事务是对数据库的事务的封装,最后本质的实现还是在数据库,假如数据库不支持事务的话,spring的事务是没有作用的。数据库的事务说简单就只有开启,回滚和关闭,spring对数据库事务的包装,原理就是拿一个数据连接,根据spring的事务配置,操作这个数据连接对数据库进行事务开启,回滚或关闭操作。但是spring除了实现这些,还配合spring的传播行为对事务进行了更广泛的管理。其实这里还有个重要的点,那就是事务中涉及的隔离级别,以及spring如何对数据库的隔离级别进行封装。事务与隔离级别放在一起理解会更好些。

 

附:注意事项

  1. 事实上Spring并不直接管理事务,而是提供了多种事务管理器。他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。
  2. 一般事务隔离级别设置TRANSACTION_READ_COMMITTED就差不多了,剩下的通过使用数据库的锁来帮我们处理别的。
  3. 为什么将事务作用在biz层呢,为什么不可以是在dao层,或者controller层?
    因为对于dao层,太细粒度了;而对于controller层又太粗糙了(耦合度太大)。
  4. tx: method,顺序有关,写在前头的优先级较高。【?】
  5. 使用注解控制事务方法的优点:
    1:开发团队达成一致约定,明确标注事务方法的编程风格。
    2:保证事务方法的执行时间尽可能短,不要穿插其他网络操作RPC / HTTP请求或者剥离到事务方法外部。
    3:不是所有的方法都需要事务,如只有一条修改操作,只读操作不需要事务控制。
  6. 待更新...
你可能感兴趣的文章
区块链投资要注意这几点
查看>>
市场套利策略是什么
查看>>
跨市场套利怎么处理
查看>>
当博士进入币圈会怎么样
查看>>
以太坊技术分解
查看>>
以太坊技术怎么提供安全性
查看>>
如何验证以太坊技术安全性
查看>>
数字货币的投资正确之路
查看>>
委员会怎么验证比特币真伪
查看>>
迅雷陷入窘迫,但是无可替代
查看>>
迅雷进军区块链速度很快
查看>>
区块链新的基建有几个考量
查看>>
我们为什么不需要BNB?
查看>>
区块链高新技术人才紧缺
查看>>
迅雷的区块链不简单
查看>>
区块链投入高?看你怎么对待
查看>>
原始链资产桥
查看>>
数字货币的骗局
查看>>
由于比特币价值不断升高
查看>>
什么是区块链?
查看>>