事务相关

Spring 事务传播

Spring 支持的事务粒度是方法级别。 如果事务方法 methodA() 中调用了 事务方法 methodB(),就要针对特定的场景,告诉 spring 这两个事务是如何作用的。 两个事务的作用机制,就是事务的传播机制。 不过 spring 的事务传播,主要看 methodB() 的事务如何处理,这里还包含 methodA() 没有事务的情况

spring 事务传播属性(TransactionDefinition)

属性 含义
PROPAGATION_REQUIRED 0 如果当前没有事务,就新建一个;如果有,就将自己加入当前的事务。这个是默认设置
PROPAGATION_SUPPORTS 1 如果当前没有事务,那就算了;如果有,就将自己加入当前的事务
PROPAGATION_MANDATORY 2 如果当前没有事务,就抛出异常;如果当前有事务,就将自己加入当前的事务
PROPAGATION_REQUIRES_NEW 3 如果当前没有事务,就新建一个事务;如果当前有事务,就将当前事务挂起
PROPAGATION_NOT_SUPPORTED 4 如果当前没有事务,就正常执行;如果当前有事务,就将当前事务挂起
PROPAGATION_NEVER 5 如果当前没有事务,就正常执行;如果当前有事务,就抛出异常
PROPAGATION_NESTED 6 如果当前没有事务,就新建一个;如果有,就在嵌套事务里执行
ISOLATION_DEFAULT -1 使用数据库默认的事务传播机制

spring 数据库事务隔离级别

属性 含义 影响
ISOLATION_DEFAULT -1 使用数据库的事务隔离级别 参考下方具体设置
TRANSACTION_NONE 0 不使用事务 容易丢失数据
ISOLATION_READ_UNCOMMITTED 1 能读别人未提交的数据 会出现脏读
TRANSACTION_READ_COMMITTED 2 只能读别人提交的数据,读的时候,别人可以写,只是没提交的值,你读不到 会造成不可重复读
TRANSACTION_REPEATABLE_READ 4 可重复读,即读的时候别人不允许修改,但是别人可以插入值 会有幻读
TRANSACTION_SERIALIZABLE 8 序列化,可以认为是单线程 性能太低

Search

    欢迎关注我的微信公众号

    Bishion

    Table of Contents