初识-事务

目录

事务

操作主要有三步

Spring事务管理

Transactional注解

@Transactional注解书写位置

方法

接口

开启事务管理日志

事务进阶

异常回滚的属性:rollbackFor 

事务传播行为:propagation

常见的事务传播

记录日志数据案例


事务

一组操作的集合,它是一个不可分割的工作单位。

操作主要有三步

1. 开启事务(一组操作开始前,开启事务):start transaction / begin ;
2. 提交事务(这组操作全部成功后,提交事务):commit ;
3. 回滚事务(中间任何一个操作出现异常,回滚事务):rollback ;

Spring事务管理

Transactional注解

在当前这个方法执行开始之前来开启事务,方法执行完毕之后提交事务。如果在这个方法执行的过程当中出现了异常,就会进行事务的回滚操作。

默认情况下,只有出现RuntimeException(运行时异常)才会回滚事务。

@Transactional注解书写位置

方法

当前方法交给spring进行事务管理

当前类中所有的方法都交由spring进行事务管理

接口

接口下所有的实现类当中所有的方法都交给spring 进行事务管理

开启事务管理日志

在application.yml配置文件中开启

#spring事务管理日志
logging:
  level:
    org.springframework.jdbc.support.JdbcTransactionManager: debug

事务进阶

异常回滚的属性:rollbackFor 

让所有的异常都回滚,需要来配置@Transactional注解当中的rollbackFor属性,指定出现何种异常类型

@Transactional(rollbackFor={Exception.class})//可以使用数组  //是Exception类型的异常会回滚

事务传播行为:propagation

当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制。

在@Transactional注解的后面指定一个属性propagation属性来指定传播行为。

@Transactional(propagation = Propagation.传播属性)

常见的事务传播

REQUIRED【默认值】需要事务,有则加入,无则创建新事务

REQUIRES_NEW需要新事务,无论有无,总是创建新事务

记录日志数据案例

业务实现类中的方法:DeptServiceImpl

//删除部门
    try {
        deptMapper.delete(id);
        //删除对应部门的员工
        empMapper.deleteDeptId(id);

    } finally {
        DeptLog deptLog = new DeptLog();
        deptLog.setCreateTime(LocalDateTime.now());
        deptLog.setDescription("删除部门");
        deptLogService.insert(deptLog);
    }

DeptLogServiceImpl

@Service
public class DeptLogServiceImpl implements DeptLogService {

    @Autowired
    private DeptLogMapper deptLogMapper;

    @Transactional(propagation = Propagation.REQUIRES_NEW) //不论是否有事务,都创建新事务  ,运行在一个独立的事务中。
    @Override
    public void insert(DeptLog deptLog) { 
        deptLogMapper.insert(deptLog);
    }
}

点击这里查看更多知识

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值