MySQL事务管理

76 阅读2分钟

一、作用

事务会把所有的操作整合在一起向系统提交,这些操作要么同时成功,要么同时失败。
在mysql里事务是自动提交的,在执行DML语句时,MySQL会立即隐式的提交事务。

二、事务操作

开启事务:在操作执行前,开启事务(start transactian/begin)
提交事务:操作全部执行结束后,提交事务(commit)
回滚事务:在这组操作中有一个操作执行失败,都应该回滚操作(rollback

image.png

三、Spring 事务管理@Transactional注解

位置放在业务层的方法上类上接口上,作用是将当前的方法或类执行前开启事务,执行完毕提交事务。 位置:

  1.   -方法上:当前方法交给spring进行事务管理
    
  2.  -类上:当前类中所有的方法都交由spring进行事务管理
    
  3.  -接口上:接口下所有的实现类当中所有的方法都交给spring 进行事务管理
    

可以在 application.yml 文件中配置事务管理日志,就可以控制看到事务相关的日志信息。 image.png

四、Spring事务进阶

@transacional注解的属性:
rollbackFor:

在默认情况下,只有出现RuntimeException(运行时异常)才会回滚事务;,通过rollbackFor这个属性可以指定出现何种异常类型回滚事务。

image.png

propagation:

当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制,我们想要控制事务的传播行为,要通过propagation属性来指定,常见的属性值有:

REQUIRED:(默认值)需要事务,有则加入,无则创建新的事务。

REQUIRES_NEW:需要新事物,无论有误,总是创建新事务。

五、事务四大特性

原子性:事务是不可分割的最小单元,要么全部成功,要么全部失败。
一致性:事务完成时,必须使所有的数据都保持一致状态。
隔离性:数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
持久性:事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。