Package org.hibernate.context.internal
Class ManagedSessionContext
- java.lang.Object
-
- org.hibernate.context.spi.AbstractCurrentSessionContext
-
- org.hibernate.context.internal.ManagedSessionContext
-
- All Implemented Interfaces:
Serializable
,CurrentSessionContext
public class ManagedSessionContext extends AbstractCurrentSessionContext
Represents aCurrentSessionContext
the notion of a contextual session is managed by some external entity (generally some form of interceptor, etc). This external manager is responsible for scoping these contextual sessions appropriately binding/unbinding them here for exposure to the application throughSessionFactory.getCurrentSession()
calls.Basically exposes two interfaces.
- First is the implementation of CurrentSessionContext which is then used
by the
SessionFactory.getCurrentSession()
calls. This portion is instance-based specific to the session factory owning the given instance of this impl (there will be one instance of this per each session factory using this strategy). - Second is the externally facing methods
hasBind(org.hibernate.SessionFactory)
,bind(org.hibernate.Session)
, andunbind(org.hibernate.SessionFactory)
used by the external thing to manage exposure of the current session it is scoping. This portion is static to allow easy reference from that external thing.
The underlying storage of the current sessions here is a static
ThreadLocal
-based map where the sessions are keyed by the owning session factory.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description ManagedSessionContext(SessionFactoryImplementor factory)
Constructs a new ManagedSessionContext
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Session
bind(Session session)
Binds the given session to the current context for its session factory.Session
currentSession()
Retrieve the current session according to the scoping defined by this implementation.static boolean
hasBind(SessionFactory factory)
Check to see if there is already a session associated with the current thread for the given session factory.protected static Map<SessionFactory,Session>
sessionMap()
static Session
unbind(SessionFactory factory)
Unbinds the session (if one) current associated with the context for the given session.-
Methods inherited from class org.hibernate.context.spi.AbstractCurrentSessionContext
baseSessionBuilder, factory, validateExistingSession
-
-
-
-
Constructor Detail
-
ManagedSessionContext
public ManagedSessionContext(SessionFactoryImplementor factory)
Constructs a new ManagedSessionContext- Parameters:
factory
- The factory this context will service
-
-
Method Detail
-
currentSession
public Session currentSession()
Description copied from interface:CurrentSessionContext
Retrieve the current session according to the scoping defined by this implementation.- Returns:
- The current session.
-
hasBind
public static boolean hasBind(SessionFactory factory)
Check to see if there is already a session associated with the current thread for the given session factory.- Parameters:
factory
- The factory against which to check for a given session within the current thread.- Returns:
- True if there is currently a session bound.
-
bind
public static Session bind(Session session)
Binds the given session to the current context for its session factory.- Parameters:
session
- The session to be bound.- Returns:
- Any previously bound session (should be null in most cases).
-
unbind
public static Session unbind(SessionFactory factory)
Unbinds the session (if one) current associated with the context for the given session.- Parameters:
factory
- The factory for which to unbind the current session.- Returns:
- The bound session if one, else null.
-
sessionMap
protected static Map<SessionFactory,Session> sessionMap()
-
-