Transaction Reference propagation behaviors

Transaction: https://segmentfault.com/a/1190000013341344

Transaction Isolation Levels

  • isolation: Specifies transaction isolation level. Default is DEFAULT (use database’s default).

Transaction Propagation

  • propagation: Specifies transaction propagation behavior. Default is REQUIRED (for insert/update/delete). Use SUPPORTS for queries.

Transaction Properties

  • read-only: Specifies if transaction is read-only. Use true for queries, default is false.
  • timeout: Transaction timeout in seconds. Default is -1 (no timeout).
  • rollback-for: Specifies an exception that triggers rollback. Any other exceptions won’t trigger rollback. Default is any exception triggers rollback.
  • no-rollback-for: Specifies an exception that doesn’t trigger rollback. Any other exceptions trigger rollback.

Programmatic Transaction Management

@Autowired
private DataSourceTransactionManager transactionManager;

public void transfer() {
    TransactionDefinition definition = new DefaultTransactionDefinition();
    TransactionStatus status = transactionManager.getTransaction(definition);
    
    try {
        // business logic
        transactionManager.commit(status);
    } catch (Exception e) {
        transactionManager.rollback(status);
    }
}

Declarative Transaction Management (XML)

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="*" propagation="REQUIRED"/>
        <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
    </tx:attributes>
</tx:advice>

Declarative Transaction Management (Annotation)

@Transactional(propagation = Propagation.REQUIRED)
public void transfer(String from, String to, double amount) {
    // business logic
}

Summary

Spring provides flexible transaction management through both programmatic and declarative approaches.