1. 程式人生 > 其它 >Spring框架自定義提交與回滾事務

Spring框架自定義提交與回滾事務

1. 補充知識:

  Spring框架的七種事務傳播行為:

事務傳播行為型別 說明
PROPAGATION_REQUIRED 如果當前沒有事務,就新建一個事務,如果已經存在一個事務中,加入到這個事務中,REQUIRED事務丟擲異常回滾,外部方法事務也將回滾。
PROPAGATION_SUPPORTS 支援當前事務,如果當前沒有事務,就以非事務方式執行。
PROPAGATION_MANDATORY 使用當前的事務,如果當前沒有事務,就丟擲異常。
PROPAGATION_REQUIRES_NEW 新建事務,如果當前存在事務,把當前事務掛起。
PROPAGATION_NOT_SUPPORTED
以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
PROPAGATION_NEVER 以非事務方式執行,如果當前存在事務,則丟擲異常。
PROPAGATION_NESTED 如果當前存在事務,則在巢狀事務內執行。如果當前沒有事務,則執行與PROPAGATION_REQUIRED類似的操作,NESTED方法丟擲異常回滾,不會影響到外部方法的事務。

2. 自定義提交與回滾事務: 

  @Autowired
  PlatformTransactionManager transactionManager;
  private void doTransaction() {
    DefaultTransactionDefinition definition = new DefaultTransactionDefinition();


    //根據需要更改事務的傳播行為
    definition.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
    TransactionStatus transactionStatus = transactionManager.getTransaction(definition);
    try {
      //TODO
      //自定義需要事務管理SQL業務
    } catch (Exception e) {
      //回滾
       transactionManager.rollback(transactionStatus);

    }
    //提交
    transactionManager.commit(transactionStatus);
  }