Tlias 项目 SQL 事务

Tlias 项目 SQL 事务

  • spring 事务管理通过 aop 实现

删除部门

  • 删除部门时 应解散部门下的员工

  • 服务层对数据尽心多次增删改的方法前加注解
logging:  
  level:  
    org.springframework.jdbc.support.JdbcTransactionManager: debug
@Transactional  
@Override  
public void delete(Integer id) {  
    deptMapper.deleteById(id);  
    int i = 1/0;  
    empMapper.deleteByDept(id);  
}

Transaction

  • 回滚什么异常

事务传播行为

  • 但是 事务的默认值是 required ,insert的事务和delete的事务是一个事务, delete事务回滚insert方法内的操作也会回滚, 因此日志不会插入成功.
    • 解决方法是 把insert改成新的事物, propagation = REQUIRES_NEW, 调用insert时 , 会挂起delete事务, 执行insert事务, 完毕后执行delete事务,delete回滚时insert已经提交了, insert不会回滚.