Spring 事务

Spring事务是一种用于管理数据库事务的机制,它使开发人员能够在应用程序中声明性地处理事务。Spring框架提供了注解或XML配置的方式来处理事务,不需要手动编写繁琐的事务管理代码。

1. Spring事务简介

- 事务概念:在数据层保障一系列的数据库操作,要么同时成功,要么同时失败
- Spring事务概念:在数据层或业务层保障一系列的数据库操作,要么同时成功,要么同时失败
- 作用:保证他们在同一个事务中,当业务层中出现异常,整个事务就会回滚,保证数据的准确性

2. 相关技术介绍

  • Spring为了管理事务,提供了一个平台事务管理器 PlatformTransactionManager

commit() 方法是用来提交事务,rollback() 方法是用来回滚事务

  • 实现类 PlatformTransactionManager 事务管理器

实现类需要提供 DataSource 对象,即可实现 Spring 帮在业务层管理事务

3. 注解

  • @EnableTransactionManagement
名称 @EnableTransactionManagement
类型 配置类注解
位置 配置类定义上方
作用 设置当前Spring环境中开启注解式事务支持
  • @Transactional(默认只回滚 运行时异常)

解决方法:@Transactional (rollbackFor = Exception.class)

名称 @Transactional
类型 接口注解  类注解  方法注解
位置 业务层接口上方(推荐)、业务层实现类上方、业务方法上方(推荐)
作用 为当前业务层方法添加事务(如果设置在类或接口上方,则类或接口中所有方法均添加事务)

4. Spring事务属性

@Transactional 注解事务配置

Spring 事务_第1张图片

  • readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true
  • timeout:设置超时时间单位秒,在多长时间之内事务没有提交成功就自动回滚,-1表示不设置超时时间
  • rollbackFor:当出现指定异常进行事务回滚
  • rollbackForClassName:等同于rollbackFor,只不过属性为异常的类全名字符串
  • noRollbackFor:当出现指定异常不进行事务回滚
  • noRollbackForClassName:等同于noRollbackFor,只不过属性为异常的类全名字符串
  • isolation:设置事务的隔离级别
    • DEFAULT:默认隔离级别, 会采用数据库的隔离级别
    • READ_UNCOMMITTED:读未提交
    • READ_COMMITTED:读已提交
    • REPEATABLE_READ:重复读取
    • SERIALIZABLE:串行化
  • propagation:事务的传播行为,即事务协调员对事务管理员所携带事务的处理态度,表示当一个事务方法被另一个事务方法调用时,应该如何进行事务控制

你可能感兴趣的:(spring,java,后端)