All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.datalking.jdbc.transaction.TransactionDefinition Maven / Gradle / Ivy

package com.github.datalking.jdbc.transaction;

import java.sql.Connection;

/**
 * @author yaoo on 5/27/18
 */
public interface TransactionDefinition {

    /// 事务的传播级别,7级,定义的是事务的控制范围
    // 支持当前事务,如果当前没有事务,就新建一个事务,spring默认的事务传播级别
    int PROPAGATION_REQUIRED = 0;
    // 支持当前事务,如果当前没有事务,就以非事务方式执行
    int PROPAGATION_SUPPORTS = 1;
    // 支持当前事务,如果当前没有事务,就抛出异常
    int PROPAGATION_MANDATORY = 2;
    // 新建事务,如果当前存在事务,把当前事务挂起
    int PROPAGATION_REQUIRES_NEW = 3;
    // 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
    int PROPAGATION_NOT_SUPPORTED = 4;
    // 以非事务方式执行,如果当前存在事务,则抛出异
    int PROPAGATION_NEVER = 5;
    // 如果当前上下文存在事务,则嵌套事务执行,如果不存在事务,则新建事务
    // 嵌套是子事务套在父事务中执行,子事务是父事务的一部分,在进入子事务之前,父事务建立一个回滚点,叫save point,然后执行子事务,
    // 这个子事务的执行也算是父事务的一部分,然后子事务执行结束,父事务继续执行
    int PROPAGATION_NESTED = 6;

    /// 事务的数据隔离级别,4级,定义的是事务在数据库读写方面的控制
    int ISOLATION_DEFAULT = -1;
    // 读取未提交,保证了读取过程中不会读取到非法数据
    int ISOLATION_READ_UNCOMMITTED = Connection.TRANSACTION_READ_UNCOMMITTED;
    // 读取已提交,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了脏读
    int ISOLATION_READ_COMMITTED = Connection.TRANSACTION_READ_COMMITTED;
    // 可重复读,mysql默认级别,保证了一个事务不会修改已经由另一个事务读取但未提交的数据,避免了脏读和不可重复读的情况
    int ISOLATION_REPEATABLE_READ = Connection.TRANSACTION_REPEATABLE_READ;
    // 可序列化,最严格的级别,事务串行执行,资源消耗最大
    int ISOLATION_SERIALIZABLE = Connection.TRANSACTION_SERIALIZABLE;

    // 事务超时时间
    int TIMEOUT_DEFAULT = -1;

    int getPropagationBehavior();

    int getIsolationLevel();

    int getTimeout();

    boolean isReadOnly();

    // 获取事务名,可以返回null
    String getName();


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy