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:如果当前事务存在,则嵌套事务执行

  • 相关阅读:
    centos6安装mono
    Flashcache系统管理员手册
    【ZT】超乎想象 HTML5九大超酷特效体验
    程序员不可不知的C#代码规范
    【推薦】帮你炼成软件架构师的97件事
    [ZT]智能客户端(Smart Client)
    【ZT】成就大型高性能网站的十项规则
    通過SQL取出所有周六/周日的日期到Table
    【杯具】面试才说一句话就被轰出来了
    Integer在webservice的传递
  • 原文地址:https://www.cnblogs.com/hrlizhi/p/14752560.html
Copyright © 2011-2022 走看看