## org.hibernate.context
Class JTASessionContext

    java.lang.Object
      org.hibernate.context.JTASessionContext

All Implemented Interfaces:
  Serializable, CurrentSessionContext

    public class JTASessionContext

extends Object
implements 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).

Author:
  Steve Ebersole
See Also:
  Serialized Form

Nested Class Summary
`protected static class` `JTASessionContext.CleanupSynch` JTA transaction synch used for cleanup of the internal session map.

Field Summary
`protected SessionFactoryImplementor` `factory`

Constructor Summary
`JTASessionContext(SessionFactoryImplementor factory)`

Method Summary
`protected Session` `buildOrObtainSession()` Strictly provided for subclassing purposes; specifically to allow long-session support.
`Session` `currentSession()` Retrieve the current session according to the scoping defined by this implementation.
`protected ConnectionReleaseMode` `getConnectionReleaseMode()` Mainly for subclass usage.
`protected boolean` `isAutoCloseEnabled()` Mainly for subclass usage.
`protected boolean` `isAutoFlushEnabled()` Mainly for subclass usage.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### factory

    protected final SessionFactoryImplementor factory

Constructor Detail

### JTASessionContext

    public JTASessionContext(SessionFactoryImplementor factory)

Method Detail

### currentSession

    public Session currentSession()
                           throws HibernateException

  Retrieve the current session according to the scoping defined by this implementation.

  Specified by:
    `currentSession` in interface `CurrentSessionContext`
  Returns:
    The current session.
  Throws:
    `HibernateException` - Typically indicates an issue locating or creating the current session.

### buildOrObtainSession

    protected 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

    protected ConnectionReleaseMode getConnectionReleaseMode()

  Mainly for subclass usage. This impl always returns after_statement.

  Returns:
    The connection release mode for any built sessions.

Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.