Skip to main content
Hint

This article is generated by AI translation.

Programmatic API

Programmatic transactions manually control transaction begin, commit, and rollback through TransactionManager methods.

Basic usage
TransactionManager txManager = ...;

TransactionStatus tranA = txManager.begin();
try {
// Execute business logic
...
txManager.commit(tranA);
} catch (Throwable e) {
txManager.rollBack(tranA);
throw e;
}

You can configure propagation and isolation via begin arguments:

Specify propagation and isolation
TransactionStatus tranA = txManager.begin(
Propagation.REQUIRES_NEW, // propagation
Isolation.READ_COMMITTED // isolation
);

You can also specify only the propagation behavior (isolation defaults to DEFAULT):

Specify propagation only
TransactionStatus tranA = txManager.begin(Propagation.REQUIRES_NEW);

Obtain a Transaction Manager

Method 1: Via TransactionHelper (shared instance per DataSource)
DataSource dataSource = ...;
TransactionManager txManager = TransactionHelper.txManager(dataSource);
Method 2: Create LocalTransactionManager directly
DataSource dataSource = ...;
TransactionManager txManager = new LocalTransactionManager(dataSource);
Method 3: Via dependency injection
public class TxExample {
// @Inject < Guice, Solon and Hasor
// @Resource or @Autowired < Spring
private TransactionManager txManager;
...
}
For DI usage, see the framework-specific docs