public class

ThreadLocalSessionContext

extends Object
implements CurrentSessionContext
java.lang.Object
   ↳ org.hibernate.context.ThreadLocalSessionContext

Class Overview

A CurrentSessionContext impl which scopes the notion of current session by the current thread of execution. Unlike the JTA counterpart, threads do not give us a nice hook to perform any type of cleanup making it questionable for this impl to actually generate Session instances. In the interest of usability, it was decided to have this default impl actually generate a session upon first request and then clean it up after the Transaction associated with that session is committed/rolled-back. In order for ensuring that happens, the sessions generated here are unusable until after beginTransaction() has been called. If close() is called on a session managed by this class, it will be automatically unbound.

Additionally, the static bind(Session) and unbind(SessionFactory) methods are provided to allow application code to explicitly control opening and closing of these sessions. This, with some from of interception, is the preferred approach. It also allows easy framework integration and one possible approach for implementing long-sessions.

The buildOrObtainSession(), isAutoCloseEnabled(), isAutoFlushEnabled(), getConnectionReleaseMode(), and buildCleanupSynch() methods are all provided to allow easy subclassing (for long-running session scenarios, for example).

Summary

Nested Classes
class ThreadLocalSessionContext.CleanupSynch JTA transaction synch used for cleanup of the internal session map. 
Fields
protected final SessionFactoryImplementor factory
Public Constructors
ThreadLocalSessionContext(SessionFactoryImplementor factory)
Public Methods
static void bind(Session session)
Associates the given session with the current thread of execution.
final Session currentSession()
Retrieve the current session according to the scoping defined by this implementation.
static Session unbind(SessionFactory factory)
Unassociate a previously bound session from the current thread of execution.
Protected Methods
ThreadLocalSessionContext.CleanupSynch buildCleanupSynch()
Session buildOrObtainSession()
Strictly provided for subclassing purposes; specifically to allow long-session support.
ConnectionReleaseMode getConnectionReleaseMode()
Mainly for subclass usage.
SessionFactoryImplementor getFactory()
Getter for property 'factory'.
boolean isAutoCloseEnabled()
Mainly for subclass usage.
boolean isAutoFlushEnabled()
Mainly for subclass usage.
static Map sessionMap()
Session wrap(Session session)
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.hibernate.context.CurrentSessionContext

Fields

protected final SessionFactoryImplementor factory

Public Constructors

public ThreadLocalSessionContext (SessionFactoryImplementor factory)

Public Methods

public static void bind (Session session)

Associates the given session with the current thread of execution.

Parameters
session The session to bind.

public final Session currentSession ()

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

Returns
  • The current session.

public static Session unbind (SessionFactory factory)

Unassociate a previously bound session from the current thread of execution.

Returns
  • The session which was unbound.

Protected Methods

protected ThreadLocalSessionContext.CleanupSynch buildCleanupSynch ()

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.

protected ConnectionReleaseMode getConnectionReleaseMode ()

Mainly for subclass usage. This impl always returns after_transaction.

Returns
  • The connection release mode for any built sessions.

protected SessionFactoryImplementor getFactory ()

Getter for property 'factory'.

Returns
  • Value for property 'factory'.

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.

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.

protected static Map sessionMap ()

protected Session wrap (Session session)