zoukankan      html  css  js  c++  java
  • spring(三)-事务管理

    1、 Spring事务管理

      事务管理:本质是使用spring管理事务,完成数据库对于事务的支持。

      事务:一系列对数据库操作的集合,一个操作错误,所有都必须回滚,其特点是acid。

    (1)事务并发存在问题:

      脏读:事务读取数据无效。事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改。

      不可重复读:一个事务范围内两个相同的查询却返回了不同数据。由于查询时系统中其他事务修改的提交而引起的。侧重对同一个数据的修改。

      幻读:多个事务操作统一数据集。同样的条件, 由于事务T2的修改,第 1 次和第 2 次读出来的记录数不一样。侧重对数据集的增加和删除。

      丢失更新:事务T2操作覆盖了事务T1的操作。

    (2)spring事务管理方法

      编程式事务管理(编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager),可以做到代码块事务的细粒度。

      声明式事务管理:建立在AOP之上的,其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。就不需要在业务逻辑代码中掺杂事务管理的代码。

      (包括两种方法:基于tx和aop名字空间的xml配置文件/基于@Transactional注解,对dao层注释)

    @Transactional (propagation=Propagation.NOT_SUPPORTED) 

    public class MyBatisServiceImpl implements MyBatisService {

             @Autowired

             private MyBatisDao dao;

             @Override

             public void insert(Test test) {

                      dao.insert(test); 事物传播行为是PROPAGATION_NOT_SUPPORTED,以非事务方式运行,不会存入数据库

                      //抛出unchecked异常,触发事物,回滚  

                      throw new RuntimeException("test");

             }

    (3)事务隔离级别

      若干个并发的事务之间的隔离程度。

                      

    (4)事务传播行为

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

                      

  • 相关阅读:
    npm版本管理
    spring框架学习笔记5:SpringAOP示例
    spring框架学习笔记4:SpringAOP实现原理
    spring框架学习笔记3:使用注解代替配置文件
    spring框架学习笔记2:配置详解
    spring框架学习笔记1:搭建测试
    struts2框架学习笔记7:struts2标签
    struts2框架学习笔记6:拦截器
    struts2框架学习笔记5:OGNL表达式
    struts2框架学习笔记4:获取参数
  • 原文地址:https://www.cnblogs.com/xiongchang95/p/8966683.html
Copyright © 2011-2022 走看看