zoukankan      html  css  js  c++  java
  • Spring事务的实现方式和原理以及隔离级别?

    Spring事务的实现方式和原理以及隔离级别?

      在使用spring的时候,事务有两种形式,一种是编程式,一种是声明式。@Transactional就是声明式事务。

      首先,事务的概念是数据库层面的,spring只是基于此进行了扩展。

      

      在一个方法上加了@Transactional注解后,会将这个代理对象做为bean,当在使用这个代理对象作为方法时,如果这个方法存在了@Transactional注解,那么代理对象会先把

      事务的自动提交设置为false,然后再去执行原本的业务逻辑方法,如果执行业务逻辑方法没有出现异常,那么代理逻辑中就会将事务进行提交,如果出现了异常就会回滚。

      spring的事务隔离级别就是数据库的隔离级别:外加一个默认等级。

      read uncommitted 未提交读

      read commit 提交读,不可重复读。

      repeatable read 可重复读。

      seriallizable 可串行化 

      spring 事务的传播机制

    保证同一个事务中
    PORPAGATION_REQUIRED:支持当前事务,如果不存在 就新建一个(默认)
    PROPAGATION_SUPPORTS:支持当前事务,如果不存在,就不使用事务
    PROPAGATION_MANDATORY:支持当前事务,如果不存在,抛出异常
    * 保证没有在同一个事务中
    PROPAGATION_REQUIRES_NEW:如果有事务存在,挂起当前事务,创建一个新的事务
    PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果有事务存在,挂起当前事务
    PROPAGATION_NEVER:以非事务方式运行,如果有事务存在,抛出异常
    PROPAGATION_NESTED:如果当前事务存在,则嵌套事务执行

  • 相关阅读:
    iOS开发>学无止境
    iOS开发>学无止境
    iOS开发>学无止境
    Objective-C学习—UITableView的使用
    iOS开发>学无止境
    iOS开发—AFNetworking的使用
    iOS开发>学无止境
    c#笔记(六)——数组(2)
    c#笔记(六)——数组
    c#笔记(五)——循环结构
  • 原文地址:https://www.cnblogs.com/hrlizhi/p/14752560.html
Copyright © 2011-2022 走看看