spring使用

一、事务管理

  • PlatformTransactionManager
    事务管理器
  • TransactionDefinition 
    事务定义,涵盖了
    1. 隔离级别
    2. 传播机制
    3. 回滚规则
    4. 只读
    5. 超时
  • TransactionStatus 
    事务状态,例如
    1. 是否新事务
    2. 是否回滚
    3. 是否有保存点
    4. 是否完成

1.传播机制

  • 支持当前事务
    TransactionDefinition.PROPAGATION_REQUIRED: 如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
    TransactionDefinition.PROPAGATION_SUPPORTS: 如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
    TransactionDefinition.PROPAGATION_MANDATORY: 如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。(mandatory:强制性)

  • 不持支当前事务
    TransactionDefinition.PROPAGATION_REQUIRES_NEW: 创建一个新的事务,如果当前存在事务,则把当前事务挂起。
    TransactionDefinition.PROPAGATION_NOT_SUPPORTED: 以非事务方式运行,如果当前存在事务,则把当前事务挂起。
    TransactionDefinition.PROPAGATION_NEVER: 以非事务方式运行,如果当前存在事务,则抛出异常。

  • 特殊
    TransactionDefinition.PROPAGATION_NESTED: 如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED。

PROPAGATION_NESTED和PROPAGATION_REQUIRES_NEW的区别在于,如果外部事务回滚,PROPAGATION_NESTED会跟着回滚,PROPAGATION_REQUIRES_NEW不会

你可能感兴趣的:(spring使用)