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 );
}