Spring事物

一,事物概念

1.什么是事物

事物是关系型数据库的重要组成部分,一般指要做或所做的事情

2.事物特点

  • 原子性 (atomicity):强调事务的不可分割.操作这些指令时,要么全部执行成功,要么全部不执行,只要其中一个指令执行失败,所有的执行都执行失败,数据进行回滚,回到执行指令前的数据状态。
  • 一致性 (consistency):事务的执行的前后数据的完整性保持一致.
  • 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰。比如操作同一张表是,数据库为每个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。要达到这么一种效果,对于任意两个并发的事务t1和t2,在事务t1看来,t2要么在t1开始之前就已经结束了,要么在t1结束之后再开始,这样每个事务都干净,没有其他事务在并发的执行。
  • 持久性(durability) :事务一旦结束,数据就持久到数据库,他对于数据的改变是永久性。

二,spring事物
1.spring支持以下两种方式管理事物

编程式事物管理:

编程式事物管理是通过编写代码实现的事物管理,这种方式能够在代码中精确的定义事物的边界,我们可以根据事物从哪里开始到哪里结束

声明式事物管理:

Spring声明式事物管理在底层使用采用了AOP技术,只需要在配置文件中进行相关的规则声明,就可以将事物规则应用到业务逻辑中。主要通过2种方式实现:基于XML方式的声明式事物管理和基于注解的事物管理

2.spring事物的传播特性

传播特性:指当一个事物方法被另一个事物方法调用时,这个事物方法该如何进行

Spring7种事物传播特性:

1.propagation_required: 默认事务类型,如果没有,就新建一个事务;如果有,就加入当前事务。适合绝大多数情况。

2.propagation_required_new: 如果没有,就新建一个事务;如果有,就将当前事务挂起。

3.propagation_nested: 如果没有,就新建一个事务;如果有,就在当前事务中嵌套其他事务。

4.propagation_supports: 如果没有,就以非事务方式执行;如果有,就使用当前事务。

5.propagation_not_supported: 如果没有,就以非事务方式执行;如果有,就将当前事务挂起。即无论如何不支持事务。

6.propagation_never: 如果没有,就以非事务方式执行;如果有,就抛出异常。

7.propagation_mandatory: 如果没有,就抛出异常;如果有,就使用当前事务。

3.Spring隔离级别

  • @Transactional(isolation = Isolation.REPEATABLE_READ)

            可重复读(会出现幻读),MYSQL默认级别

  • @Transactional(isolation = Isolation.READ_COMMITTED)

             读取已提交数据(会出现不可重复读和幻读),SQLSERVER默认级别

  • @Transactional(isolation = Isolation.SERIALIZABLE)

           串行化,这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。除了防               止 脏读、不可重复读外,还避免了幻像读。 

  • @Transactional(isolation = Isolation.READ_UNCOMMITTED)

            读取未提交数据(会出现脏读, 不可重复读) 基本不使用

其中:

脏读 : 一个事务读取到另一事务未提交的更新数据
幻读 : 一个事务读到另一个事务已提交的insert数据
不可重复读 : 在同一事务中, 多次读取同一数据返回的结果有所不同, 换句话说, 
后续读取可以读到另一事务已提交的更新数据. 相反, "可重复读"在同一事务中多次
读取数据时, 能够保证所读数据一样, 也就是后续读取不能读到另一事务已提交的更新数据
 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cqq00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值