public class JTASessionContext extends AbstractCurrentSessionContextAn implementation of
CurrentSessionContextwhich scopes the notion of a current session to a JTA transaction. Because JTA gives us a nice tie-in to clean up after ourselves, this implementation will generate Sessions as needed provided a JTA transaction is in effect. If a session is not already associated with the current JTA transaction at the time
currentSession()is called, a new session will be opened and it will be associated with that JTA transaction. Note that the sessions returned from this method are automatically configured with both the
auto-closeattributes set to true, meaning that the Session will be automatically flushed and closed as part of the lifecycle for the JTA transaction to which it is associated. Additionally, it will also be configured to aggressively release JDBC connections after each statement is executed. These settings are governed by the
getConnectionReleaseMode()methods; these are provided (along with the
buildOrObtainSession()method) for easier subclassing for custom JTA-based session tracking logic (like maybe long-session semantics).
- See Also:
- Serialized Form
Nested Class Summary
Nested Classes Modifier and Type Class Description
protected static class
JTASessionContext.CleanupSyncJTA transaction sync used for cleanup of the internal session map.
All Methods Instance Methods Concrete Methods Modifier and Type Method Description
buildOrObtainSession()Strictly provided for subclassing purposes; specifically to allow long-session support.
currentSession()Retrieve the current session according to the scoping defined by this implementation.
getConnectionReleaseMode()Mainly for subclass usage.
isAutoCloseEnabled()Mainly for subclass usage.
isAutoFlushEnabled()Mainly for subclass usage.
Methods inherited from class org.hibernate.context.spi.AbstractCurrentSessionContext
baseSessionBuilder, factory, validateExistingSession
public JTASessionContext(SessionFactoryImplementor factory)Constructs a JTASessionContext
factory- The factory this context will service
public Session currentSession() throws HibernateExceptionDescription copied from interface:
CurrentSessionContextRetrieve the current session according to the scoping defined by this implementation.
- The current session.
HibernateException- Typically indicates an issue locating or creating the current session.
protected Session buildOrObtainSession()Strictly provided for subclassing purposes; specifically to allow long-session support. This implementation always just opens a new session.
- the built or (re)obtained session.
protected boolean isAutoCloseEnabled()Mainly for subclass usage. This impl always returns true.
- Whether or not the the session should be closed by transaction completion.
protected boolean isAutoFlushEnabled()Mainly for subclass usage. This impl always returns true.
- Whether or not the the session should be flushed prior transaction completion.
protected ConnectionReleaseMode getConnectionReleaseMode()Mainly for subclass usage. This impl always returns after_statement.
- The connection release mode for any built sessions.