Package org.hibernate.context
Class JTASessionContext
java.lang.Object
org.hibernate.context.JTASessionContext
- All Implemented Interfaces:
Serializable,CurrentSessionContext
An implementation of
CurrentSessionContext which 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-flush and
auto-close attributes 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 isAutoFlushEnabled(), isAutoCloseEnabled(), and
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classJTA transaction synch used for cleanup of the internal session map. -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected SessionStrictly provided for subclassing purposes; specifically to allow long-session support.Retrieve the current session according to the scoping defined by this implementation.protected ConnectionReleaseModeMainly for subclass usage.protected booleanMainly for subclass usage.protected booleanMainly for subclass usage.
-
Field Details
-
factory
-
-
Constructor Details
-
JTASessionContext
-
-
Method Details
-
currentSession
Retrieve the current session according to the scoping defined by this implementation.- Specified by:
currentSessionin interfaceCurrentSessionContext- Returns:
- The current session.
- Throws:
HibernateException- Typically indicates an issue locating or creating the current session.
-
buildOrObtainSession
Strictly provided for subclassing purposes; specifically to allow long-session support. This implementation always just opens a new session.- Returns:
- the built or (re)obtained session.
-
isAutoCloseEnabled
protected boolean isAutoCloseEnabled()Mainly for subclass usage. This impl always returns true.- Returns:
- Whether or not the the session should be closed by transaction completion.
-
isAutoFlushEnabled
protected boolean isAutoFlushEnabled()Mainly for subclass usage. This impl always returns true.- Returns:
- Whether or not the the session should be flushed prior transaction completion.
-
getConnectionReleaseMode
Mainly for subclass usage. This impl always returns after_statement.- Returns:
- The connection release mode for any built sessions.
-