美文网首页
7.21_29期Spring事务属性

7.21_29期Spring事务属性

作者: 萧修 | 来源:发表于2023-07-29 01:00 被阅读0次

readonly:只读属性

timeout:设置事务超时时间,-1永不超时

rollbackfor:设置事务回滚异常

某些异常不参与回滚需要添加,比如下面如果不添加IOE异常,那么上面会执行成功,下面会失败,添加iOE异常之后,事务会进行回滚

@Transactional(rollbackFor = {IOException.class})
public void transfer(String out, String in, Double money) throws IOException {
        accountDao.outMoney(out,money);

        if(true){throw new IOException();}
        //内存异常,
        //运行异常 io异常不会进行提交回滚
        accountDao.inMoney(in,money);
    }

本文案例,将转账信息存为日志,引入一个新的概念
事务协调员,事务协调员对事务管理员所携带事务处理的态度

存日志数据访问层

public interface LogDao {
    @Insert("insert into logService (info,createData) values (#{info},now())")
    public void log(String info);
}

propagation在新的事务,重新创建新的事务,

public void transfer(String out, String in, Double money) throws IOException {
        try {
            accountDao.outMoney(out,money);
            int i = 1/0;
            accountDao.inMoney(in,money);
        } finally {
            logService.log(out, in, money);
        }
    }

public interface LogService {

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void log(String out, String in, Double money);

}

相关文章

网友评论

      本文标题:7.21_29期Spring事务属性

      本文链接:https://www.haomeiwen.com/subject/oszaudtx.html