TransactionalProcessor

Provides the mechanism to run a block of code within a transaction boundary, using Spring Framework’s transaction primitives (such as TransactionDefinition and its annotation equivalent, Propagation ).

API

TransactionalProcessor.java
interface TransactionalProcessor {
  Try<T> callTransactional(TransactionDefinition def, Callable<T> callable)     (1)
  Try<Void> runTransactional(TransactionDefinition def, ThrowingRunnable runnable)     (2)
  Try<T> callTransactional(Propagation propagation, Callable<T> callable)     (3)
  Try<Void> runTransactional(Propagation propagation, ThrowingRunnable runnable)     (4)
  Try<T> callWithinCurrentTransactionElseCreateNew(Callable<T> callable)     (5)
  Try<Void> runWithinCurrentTransactionElseCreateNew(ThrowingRunnable runnable)     (6)
}
1 callTransactional(TransactionDefinition, Callable)

Runs given callable with a transactional boundary, where the detailed transactional behavior is governed by given TransactionDefinition def .

2 runTransactional(TransactionDefinition, ThrowingRunnable)

Runs given runnable with a transactional boundary, where the detailed transactional behavior is governed by given TransactionDefinition def .

3 callTransactional(Propagation, Callable)

Runs given callable with a transactional boundary, where the detailed transactional behavior is governed by given Propagation propagation .

4 runTransactional(Propagation, ThrowingRunnable)

Runs given runnable with a transactional boundary, where the detailed transactional behavior is governed by given Propagation propagation .

5 callWithinCurrentTransactionElseCreateNew(Callable)

Runs given callable within an existing transactional boundary, or in the absence of such a boundary, creates a new one.

6 runWithinCurrentTransactionElseCreateNew(ThrowingRunnable)

Runs given runnable within an existing transactional boundary, or in the absence of such a boundary creates a new one.

Members

callTransactional(TransactionDefinition, Callable)

Runs given callable with a transactional boundary, where the detailed transactional behavior is governed by given TransactionDefinition def .

runTransactional(TransactionDefinition, ThrowingRunnable)

Runs given runnable with a transactional boundary, where the detailed transactional behavior is governed by given TransactionDefinition def .

callTransactional(Propagation, Callable)

Runs given callable with a transactional boundary, where the detailed transactional behavior is governed by given Propagation propagation .

runTransactional(Propagation, ThrowingRunnable)

Runs given runnable with a transactional boundary, where the detailed transactional behavior is governed by given Propagation propagation .

More fine grained control is given via #runTransactional(TransactionDefinition, ThrowingRunnable)

callWithinCurrentTransactionElseCreateNew(Callable)

Runs given callable within an existing transactional boundary, or in the absence of such a boundary, creates a new one.

In other words, support a current transaction, create a new one if none exists.

runWithinCurrentTransactionElseCreateNew(ThrowingRunnable)

Runs given runnable within an existing transactional boundary, or in the absence of such a boundary creates a new one.

Implementation

The core framework provides a default implementation of this service, o.a.c.core.runtimeservices.transaction.TransactionServiceSpring.