Like we all know, not using the @Transactional annotation in a Spring-Hibernate application gives a Hibernate Exception:
Exception in thread "main" org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
I wanted to know what does it mean by "transaction synchronized session"?
It is a Session whose state is synchronized with underlying transaction. For example: after transaction is completed the session closes.
Spring manages it with
TransactionSynchronizationManagerthat holds a set ofTransactionSynchronizationadapters.AbstractPlatformTransactionManagercalls those adapters when performing different actions with transaction.Most notable synchronization is
SpringSessionSynchronization. Among other things it is responsible for flushing session before commit and closing session after transaction is completed.