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 }

     

  • 相关阅读:
    [转载]Linux下mail使用技巧
    VTK Online教程大全
    拓扑结构与TopoDS
    三维视图变换与相机模型
    说说DoDataExchange(CDataExchange* pDX)
    Lua Lib在VC下的编译
    建立最简单的OpenCASCADE程序
    构建通用类型 继承 VS 聚合
    【软件】新瓶装老酒 MyCapture
    用std::find查找文件流中的内容
  • 原文地址:https://www.cnblogs.com/penphy/p/12550927.html
Copyright © 2011-2022 走看看