zoukankan      html  css  js  c++  java
  • Spring事务:@Transactional

    一、背景

    事务:原子性、一致性、隔离性、持久性

    二、方式

    1. 编程式事务:使用代码实现

    Public interface PlatformTransactionManager{  
           // 由TransactionDefinition得到TransactionStatus对象
           TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;
           // 提交
           Void commit(TransactionStatus status) throws TransactionException;  
           // 回滚
           Void rollback(TransactionStatus status) throws TransactionException;  
    }

    2. 声明式事务

    a. 配置文件xml声明

    b. @Transactional注解,加在类(Service)或者方法上,加在类上表示为此类的所有方法都应用相同配置的事务

    三、@Transactional注解基本原理

    1. 通过代理实现目标类,事务在代理类里进行增强

    2. 由于代理类继承了目标类,所以只能对public的方法起作用

    3. 必须在代理类外部调用,事务才能起作用;例如目标类里有两个方法,不加事务的方法调用另一个加了事务的方法,此时事务是不起作用的 

    参考:

    https://www.jianshu.com/p/5687e2a38fbc

    https://mp.weixin.qq.com/s/JcHt99SAbNIlY063rmylpA

  • 相关阅读:
    设计模式六大原则
    .net Stream篇(七)
    .net Stream篇(六)
    .net Stream篇(五)
    .net Stream篇(四)
    Leetcode 18
    Leetcode 16
    Leetcode 15
    Leetcode 12
    Leetcode 9
  • 原文地址:https://www.cnblogs.com/june0816/p/11216192.html
Copyright © 2011-2022 走看看