Live2D

事务

开发中又遇到了事务相关问题,就乘着这次,重新整理下事务相关

一、什么是事务

首先大家都知道sql吧,我的理解是:事务就是一组对sql语句的操作的集合

二、事务的四大特性

这组sql语句具备 同时执行成功和同时执行失败的特性。把这一特性细分,就是事务的四大特性 ——> ACID

  • A【Atomicity】原子性,一个事务是一个整体,他们同时被执行,或者同时不执行,如果执行到一半出现错误,会有相应的措施解决(后文会提)

  • C【Consistency】一致性,事务在事务执行之前和事务执行之后的完整性不变,即事务的执行使数据库从一种正确状态变为另一种正确状态

  • I【Isolation】隔离性,数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性保证了事务在未执行完本次操作之前,其他事务看不到该事务对数据库的改变

  • D【Durability】持久性,事务执行结束后,对数据库的改变是永久且不可逆的

三、事务的隔离级别

这里分为两部分 【并发下,事务会产生的问题】+ 【事务的隔离级别】

前面我们说到了事务四大特性之一的 隔离性,它的特点最明显,有并发。
在并发环境下会出现的问题如下:放链接了

这里,默认的隔离级别 ——> MySQL :可重复读REPEATABLE-READ,Oracle :读已提交READ COMMITTED

四、事务的传播机制

五、事务类型

  • 数据库事务类型有本地事务和分布式事务
  • Java事务类型有JDBC事务和JTA事务
  • spring事务是对JDBC事务的封装,包含声明式事务和编程式事务

https://www.cnblogs.com/xiaolang8762400/p/7407161.html

https://www.cnblogs.com/drizzlewithwind/p/5711653.html

在这里介绍spring事务的声明式事务
它有两种:一种xml文件注入,一种使用注解

    • 注解 : @Transactional + @EnableTransactionManager

五、事务失效

为什么失效?事务是AOP动态代理实现的,回答这个问题也就是回答为什么动态代理失效

posted @ 2024-02-20 16:46  一只快乐的柠檬精J  阅读(7)  评论(0编辑  收藏  举报
复制代码