@Override
protected void beforeTransactionCommit() {
final TransactionCoordinator coordinator = transactionCoordinator();
coordinator.sendBeforeTransactionCompletionNotifications( this );
final TransactionContext transactionContext = coordinator.getTransactionContext();
final boolean flush = ! transactionContext.isFlushModeNever() &&
( isDriver || ! transactionContext.isFlushBeforeCompletionEnabled() );
if ( flush ) {
// if an exception occurs during flush, user must call rollback()
transactionContext.managedFlush();
}
if ( isDriver && isInitiator ) {
transactionContext.beforeTransactionCompletion( this );
}
closeIfRequired();
}