spring boot 里面 事务踩的坑

咱们都知道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;
/**
*支持当前事务,若是当前事务存在,则执行一个嵌套事务,若是当前没有事务,就新建一个事务。
**/
int PROPAGATION_NESTED = 6;

当一个事务中嵌套不少事务的时候,容易出现问题 产品中执行一个操做,往表里面插入一行数据,在后面回对这个数据查询检索,若是咱们对于检索的方法配置了 NOT_SUPPORTED ,那么就会出现永远查询不到刚插入的数据。因此针对配置 声明式事务 建议 readonly 的采用 SUPPORTS 其余的使用 REQUIRED,若是一些事务会锁表,并且会有高并发,咱们应该采用 REQUIRES_NEW高并发

相关文章
相关标签/搜索