-
Notifications
You must be signed in to change notification settings - Fork 2
Transaction Management
To use transactions you have to initialize q2o with either q2o.initializeTxSimple(DataSource)
or q2o.initializeTxCustom(DataSource, TransactionManager, UserTransaction)
. Then every single q2o operation is executed in a transaction. To enclose several operations in a transaction there are two ways:
// 1)
try {
TransactionHelper.beginOrJoinTransaction();
// Execute your operations here
TransactionHelper.commit();
}
catch (Exception e) {
TransactionHelper.rollback();
}
// 2)
SqlClosure.sqlExecute(new SqlFunction<Void>() {
@Override
public Void execute(final Connection q2oManagedConnection) throws SQLException
{
// Execute your operations here
return null;
}
});
After initializing q2o with q2o.initializeTxSimple(DataSource)
you must use the DataSource that is returned from the method to retrieve connections.
In a Spring environment use Spring's TransactionTemplate and initialize q2o with q2o.initializeWithSpringTxSupport(DataSource)
.
Study the tests and hints in TransactionsTest.java too.
To use server managed transactions initialize q2o with q2o.initializeTxNone(DataSource)
. So every connection is in autocommit mode.