Spring事务

什么是事务

事务是数据库操作最基本操作组,逻辑上是一组操作,要么都成功,要么都失败

事务四个特性

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

spring事务分为编程式事务和声明式事务

声明式事务:

  • 基于xml配置
  • 基于注解

一般使用注解

@Transactionnal

参数:

  1. propagation:事务传播行为 默认值 REQUIRED

值:

  • REQUIRED:如果当前存在事务,则会加入此事务,如果没有,则新建一个事务
  • REQUIRED_NEW:无论存不存在事务,都会创建一个新事务
  • SUPPORTS:当前有事务,则在事务中运行,当前没有,那就没有
  • NOT_SUPPORTS:不在事务中运行,如果存在事务则挂起事务
  • MANDATOR:当前方法必须在事务中运行,如果没有正在运行的事务,则抛出异常
  • NEVER:当前方法不应在事务中运行,如果有正在运行的事务,则抛出异常
  • NESTED:如果存在事务,则开启嵌套事务运行,否则开启一个新事物
  1. ioslation:事务隔离级别:多事务操作之间不会产生影响 mysql默认值 REPEATABLE READ
  • 不考虑隔离性则会存在 :脏读、不可重复读、幻读
  • 脏读:一个未提交的事务读取到另一个未提交的事务中的数据
  • 不可重复读:一个未提交的事务读取到另一个已提交事务的修改值
  • 幻读:一个未提交事务读取到另一个事物添加的数据
  • 通过设置事务隔离性,来解决此问题
-- 脏读 不可重复读 幻读
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
  1. timeout:超时时间,超过这个时间就会回滚 默认值-1
  2. readOnly:是否只读
  3. rollbackFor:回滚
  4. noRollbackFor:不回滚
posted @ 2021-04-22 17:16  永真  阅读(52)  评论(0)    收藏  举报