C# Class Editor.Utils.NHibernateSessionManager

Handles creation and management of sessions and transactions. It is a singleton because building the initial session factory is very expensive. Inspiration for this class came from Chapter 8 of Hibernate in Action by Bauer and King. Although it is a sealed singleton you can use TypeMock (http://www.typemock.com) for more flexible testing.
Show file Open project: RIATEAM/MYSTIC

Private Properties

Property Type Description
GetSessionFactoryFor ISessionFactory
GetSessionFrom ISession
IsInWebContext bool
NHibernateSessionManager System

Public Methods

Method Description
BeginTransactionOn ( string sessionFactoryConfigPath ) : ITransaction
CloseSessionOn ( string sessionFactoryConfigPath ) : void

Flushes anything left in the session and closes the connection.

CommitTransactionOn ( string sessionFactoryConfigPath ) : void
GetSessionFrom ( string sessionFactoryConfigPath ) : ISession
HasOpenTransactionOn ( string sessionFactoryConfigPath ) : bool
RegisterInterceptorOn ( string sessionFactoryConfigPath, IInterceptor interceptor ) : void

Allows you to register an interceptor on a new session. This may not be called if there is already an open session attached to the HttpContext. If you have an interceptor to be used, modify the HttpModule to call this before calling BeginTransaction().

RollbackTransactionOn ( string sessionFactoryConfigPath ) : void

Private Methods

Method Description
GetSessionFactoryFor ( string sessionFactoryConfigPath ) : ISessionFactory

This method attempts to find a session factory stored in sessionFactories via its name; if it can't be found it creates a new one and adds it the hashtable.

GetSessionFrom ( string sessionFactoryConfigPath, IInterceptor interceptor ) : ISession

Gets a session with or without an interceptor. This method is not called directly; instead, it gets invoked from other public methods.

IsInWebContext ( ) : bool
NHibernateSessionManager ( ) : System

Private constructor to enforce singleton

Method Details

BeginTransactionOn() public method

public BeginTransactionOn ( string sessionFactoryConfigPath ) : ITransaction
sessionFactoryConfigPath string
return ITransaction

CloseSessionOn() public method

Flushes anything left in the session and closes the connection.
public CloseSessionOn ( string sessionFactoryConfigPath ) : void
sessionFactoryConfigPath string
return void

CommitTransactionOn() public method

public CommitTransactionOn ( string sessionFactoryConfigPath ) : void
sessionFactoryConfigPath string
return void

GetSessionFrom() public method

public GetSessionFrom ( string sessionFactoryConfigPath ) : ISession
sessionFactoryConfigPath string
return ISession

HasOpenTransactionOn() public method

public HasOpenTransactionOn ( string sessionFactoryConfigPath ) : bool
sessionFactoryConfigPath string
return bool

RegisterInterceptorOn() public method

Allows you to register an interceptor on a new session. This may not be called if there is already an open session attached to the HttpContext. If you have an interceptor to be used, modify the HttpModule to call this before calling BeginTransaction().
public RegisterInterceptorOn ( string sessionFactoryConfigPath, IInterceptor interceptor ) : void
sessionFactoryConfigPath string
interceptor IInterceptor
return void

RollbackTransactionOn() public method

public RollbackTransactionOn ( string sessionFactoryConfigPath ) : void
sessionFactoryConfigPath string
return void