Package org.springframework.transaction.support

# Interface TransactionCallback<T>

Type Parameters:
  `T` - the result type

All Known Implementing Classes:
  `TransactionCallbackWithoutResult`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface TransactionCallback<T>
Callback interface for transactional code. Used with `TransactionTemplate`'s `execute` method, often as anonymous class within a method implementation.

Typically used to assemble various calls to transaction-unaware data access services into a higher-level service method with transaction demarcation. As an alternative, consider the use of declarative transaction demarcation (for example, through Spring's `Transactional` annotation).

Since:
  17.03.2003
Author:
  Juergen Hoeller
See Also:
  - `TransactionTemplate`
  - `CallbackPreferringPlatformTransactionManager`

## Method Summary

Modifier and Type
Method
Description
`T`
`doInTransaction(TransactionStatus status)`
Gets called by `TransactionTemplate.execute(org.springframework.transaction.support.TransactionCallback<T>)` within a transactional context.

## Method Details

### doInTransaction

@Nullable T doInTransaction(TransactionStatus status)
Gets called by `TransactionTemplate.execute(org.springframework.transaction.support.TransactionCallback<T>)` within a transactional context. Does not need to care about transactions itself, although it can retrieve and influence the status of the current transaction via the given status object, for example, setting rollback-only.

Allows for returning a result object created within the transaction, i.e. a domain object or a collection of domain objects. A RuntimeException thrown by the callback is treated as application exception that enforces a rollback. Any such exception will be propagated to the caller of the template, unless there is a problem rolling back, in which case a TransactionException will be thrown.

Parameters:
  `status` - associated transaction status
Returns:
  a result object, or `null`
See Also:
  - `TransactionTemplate.execute(org.springframework.transaction.support.TransactionCallback<T>)`
  - `CallbackPreferringPlatformTransactionManager.execute(org.springframework.transaction.TransactionDefinition, org.springframework.transaction.support.TransactionCallback<T>)`