3.8.3. Current Session context management with JTA
The easiest way to handle
Session
s and transactions is Hibernates automatic "current"
Session
management. See the discussion of
Section 2.5, “Contextual Sessions” current sessions. Using the
"jta"
session context, if there is no Hibernate
Session
associated with the current JTA transaction, one will be started and associated with that JTA transaction the first time you call
sessionFactory.getCurrentSession()
. The
Session
s retrieved via
getCurrentSession()
in
"jta"
context will be set to automatically flush before the transaction completes, close after the transaction completes, and aggressively release JDBC connections after each statement. This allows the
Session
s to be managed by the lifecycle of the JTA transaction to which it is associated, keeping user code clean of such management concerns. Your code can either use JTA programmatically through
UserTransaction
, or (recommended for portable code) use the Hibernate
Transaction
API to set transaction boundaries. If you run in an EJB container, declarative transaction demarcation with CMT is preferred.