public void beforeCompletion() { log.trace("transaction before completion callback"); boolean flush; try { flush = !ctx.isFlushModeNever() && ctx.isFlushBeforeCompletionEnabled() && !JTAHelper.isRollback(transaction.getStatus()); // actually, this last test is probably unnecessary, since // beforeCompletion() doesn't get called during rollback } catch (SystemException se) { log.error("could not determine transaction status", se); setRollbackOnly(); throw new TransactionException( "could not determine transaction status in beforeCompletion()", se); } try { if (flush) { log.trace("automatically flushing session"); ctx.managedFlush(); } } catch (RuntimeException re) { setRollbackOnly(); throw re; } finally { jdbcContext.beforeTransactionCompletion(hibernateTransaction); } }
public void afterCompletion(int status) { if (log.isTraceEnabled()) { log.trace("transaction after completion callback, status: " + status); } try { jdbcContext.afterTransactionCompletion( status == Status.STATUS_COMMITTED, hibernateTransaction); } finally { if (ctx.shouldAutoClose() && ctx.isOpen()) { log.trace("automatically closing session"); ctx.managedClose(); } } }