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
- Spring-based projects: see details
- Solon-based projects: see details
- In Hasor and Guice you can inject with
@Inject