事务

2017-11-08  本文已影响0人  lixwcqs

spring事务:

隔离级别

隔离级别是指若干个并发的事务之间的隔离程度,与我们开发时候主要相关的场景包括:脏读取、重复读、幻读。

传播行为:

所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。

   @Transactional(propagation = Propagation.NESTED)
    public boolean publish(Article article){
        Content content = new Content();
        content.setContent(article.getContent());
        for (int i = 0; i < 3; i++) {
            //这里执行过程没有一行 且有事务控制
            boolean insertOK = contentService.insert(content);
            if (!insertOK) {
                log.error("发布文章失败:写入文本内容异常");
                throw new RuntimeException("发布文章失败");
            }
        }

        article.setContentId(content.getId());
        LocalDateTime now = LocalDateTime.now();
        article.setUTime(now);
        article.setUTime(now);
        //抛出异常 导致publish()方法上的事务提交失败 导致contentService.insert(content);回滚【即使后者执行了多次也得回滚】
        if(true) throw new RuntimeException();
        return insert(article);
    }

分布式事务

分布式事务处理 : Java 事务编程接口(JTA:Java Transaction API)和 Java 事务服务 (JTS;Java Transaction Service) 为 J2EE 平台提供了分布式事务服务。分布式事务(Distributed Transaction)包括事务管理器(Transaction Manager)和一个或多个支持 XA 协议的资源管理器 ( Resource Manager )。我们可以将资源管理器看做任意类型的持久化数据存储;事务管理器承担着所有事务参与单元的协调与控制。
参考:JTA 深度历险 - 原理与实现

上一篇 下一篇

猜你喜欢

热点阅读