## org.hibernate.context.internal
Class JTASessionContext

    java.lang.Object
      org.hibernate.context.spi.AbstractCurrentSessionContext
          org.hibernate.context.internal.JTASessionContext

All Implemented Interfaces:
  Serializable, CurrentSessionContext

    public class JTASessionContext

extends AbstractCurrentSessionContext

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:
  Serialized Form

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

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 org.hibernate.context.spi.AbstractCurrentSessionContext
`baseSessionBuilder, factory, validateExistingSession`

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

Constructor Detail

### JTASessionContext

    public JTASessionContext(SessionFactoryImplementor factory)

Method Detail

### currentSession

    public Session currentSession()
                           throws HibernateException

  Description copied from interface: `CurrentSessionContext`
  Retrieve the current session according to the scoping defined by this implementation.

  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-2012 Red Hat, Inc. All Rights Reserved.