zoukankan      html  css  js  c++  java
  • 事务三大接口

    1.PlatformTransactionManager 事务管理器

    2.TransactionDefinition 事务的一些基础信息,如超时时间、隔离级别、传播属性等

    3.TransactionStatus 事务的一些状态信息,如是否一个新的事务、是否已被标记为回滚

    1.PlatformTransactionManager 
     1 public interface PlatformTransactionManager {
     2  
     3     //根据事务定义TransactionDefinition,获取事务
     4     TransactionStatus getTransaction(TransactionDefinition definition);
     5  
     6     //提交事务
     7     void commit(TransactionStatus status);
     8  
     9     //回滚事务
    10     void rollback(TransactionStatus status);
    11 
    12 }

    2.事务定义接口TransactionDefinition 

    事务的定义包括: 事务的隔离级别,事务的传播属性,超时时间设置,是否只读

    事务的隔离级别是数据库本身的事务功能,事务的传播属性则是spring为我们提供的功能

    该接口的实现DefaultTransactionDefinition,默认的事务定义

    1 public class DefaultTransactionDefinition implements TransactionDefinition, Serializable {
    2     private int propagationBehavior = PROPAGATION_REQUIRED;
    3     private int isolationLevel = ISOLATION_DEFAULT;
    4     private int timeout = TIMEOUT_DEFAULT;
    5     private boolean readOnly = false;
    6     //
    7 }

    2.事务接口定义 TransactionStatus

    TransactionStatus它继承了SavepointManager接口,SavepointManager是对事务中上述保存点功能的封装,如下:

     

    1 public interface SavepointManager {
    2     Object createSavepoint() throws TransactionException;
    3     void rollbackToSavepoint(Object savepoint) throws TransactionException;
    4     void releaseSavepoint(Object savepoint) throws TransactionException;
    5 
    6 }

    TransactionStatus本身更多存储的是事务的一些状态信息

    是否是一个新的事物 是否有保存点 是否已被标记为回滚

    整个流程:

     1 @Autowired
     2 private PlatformTransactionManager transactionManager;
     3  
     4 TransactionStatus status = null;
     5 // 手动开启事务
     6 status = transactionManager.getTransaction(new DefaultTransactionDefinition());
     7  
     8 // 事务提交
     9 transactionManager.commit(status);
    10  
    11 // 事务回滚
    12 if (StringMoreUtils.checkValNotNull(status)) {
    13     transactionManager.rollback(status);
    14 }

     

  • 相关阅读:
    python利用Trie(前缀树)实现搜索引擎中关键字输入提示(学习Hash Trie和Double-array Trie)
    利用trie树实现前缀输入提示及trie的python实现
    利用python实现简单词频统计、构建词云
    Xss-challenge-tour(1-10)
    CTFHub-SQL注入 思路
    Bugku-web40
    Buuctf-web-[极客大挑战 2019]HardSQL
    命令执行及代码执行漏洞
    CTFHub-RCE 思路&AWCTF部分web题
    upload-labs 11-12 00截断
  • 原文地址:https://www.cnblogs.com/penphy/p/12550927.html
Copyright © 2011-2022 走看看