From Hibernate, you could extends
EmptyInterceptor
and overrideafterTransactionCompletion()
method and register it inSessionFactoryBean
orHibernateTransactionManager
.From Spring you could extends
TransactionSynchronizationAdapter
and overrideafterCompletion()
and register when appropriate withTransactionSynchronizationManager#registerSynchronization()
.
Edit
An Example of using Spring Aop to add a synchronization to all methods annotated with @Transactional
@Aspect
class TransactionAspect extends TransactionSynchronizationAdapter {
@Before("@annotation(org.springframework.transaction.annotation.Transactional)")
public void registerTransactionSyncrhonization() {
TransactionSynchronizationManager.registerSynchronization(this);
}
@Override
public void afterCompletion(int status) {
// code
}
}