zoukankan      html  css  js  c++  java
  • 总结:NHibernate——Session管理SessionManager


    public class SessionManager:IDisposable

        {

            private static readonly SessionManager instance = new SessionManager();

            private ISession m_currentSession;

            private ISessionFactory m_currentSessionFactory;

     

            private SessionManager()

            { }

     

            public static SessionManager Instance

            {

                get

                {

                    return instance;

                }

            }

     

            /// <summary>

            ///

            /// </summary>

            /// <param name="sessionFactoryConfigPath"></param>

            /// <returns></returns>

            /// <exception cref=""></exception>

            private ISessionFactory GetSessionFactory(string sessionFactoryConfigPath)

            {

                //判断SessionFactory配置文件

                if (string.IsNullOrEmpty(sessionFactoryConfigPath))

                {

                    throw new ArgumentNullException("配置文件路径错误。");

                }

     

                //创建SessionFactory

                if (m_currentSessionFactory == null)

                {

                    try

                    {

                        Configuration config = new Configuration();

                        config.Configure(sessionFactoryConfigPath);

     

                        m_currentSessionFactory = config.BuildSessionFactory();

                    }

                    catch (Exception ex)

                    {

                        throw new PersistenceException("创建SessionFactory出错。", ex);

                    }

     

                    if (m_currentSessionFactory == null)

                    {

                        throw new PersistenceException("创建SessionFactory出错。");

                    }

                }

     

                return m_currentSessionFactory;

            }

     

     

            /// <summary>

            ///

            /// </summary>

            /// <param name="sessionFactoryConfigPath"></param>

            /// <returns></returns>

            public ISession GetSession(string sessionFactoryConfigPath)

            {

                return GetSession(sessionFactoryConfigPath, null);

            }

     

            /// <summary>

            ///

            /// </summary>

            /// <param name="sessionFactoryConfigPath"></param>

            /// <param name="interceptor"></param>

            /// <returns></returns>

            public ISession GetSession(string sessionFactoryConfigPath, IInterceptor interceptor)

            {

                if (m_currentSession == null)

                {

                    if (interceptor == null)

                    {

                        m_currentSession =

                            GetSessionFactory(sessionFactoryConfigPath).OpenSession();

                    }

                    else

                    {

                        m_currentSession =

                            GetSessionFactory(sessionFactoryConfigPath).OpenSession(interceptor);

                    }

                }

                else if (!m_currentSession.IsOpen)

                {

                    m_currentSession = GetSessionFactory(sessionFactoryConfigPath).OpenSession();

                }

     

                return m_currentSession;

            }

     

            public void CloseSession()

            {

                if (m_currentSession != null && m_currentSession.IsOpen)

                {

                    m_currentSession.Flush();

                    m_currentSession.Dispose();

                    m_currentSession.Close();

                }

            }

     

            #region IDisposable 成员

     

            public void Dispose()

            {

                CloseSession();

            }

     

            #endregion

        }

     
  • 相关阅读:
    十大开源Web应用安全测试工具
    HC大会,华为联合合作伙伴发布一站式物联网IoT开发工具小熊派BearPi
    漫谈边缘计算(四):赢家是软还是硬
    漫谈边缘计算(三):5G的好拍档
    漫谈边缘计算(二):各怀心事的玩家
    漫谈边缘计算(一):边缘计算是大势所趋
    从小小后视镜看物联网的生态(下)
    机器学习笔记(四)---- 逻辑回归的多分类
    机器学习笔记(三)---- 逻辑回归(二分类)
    机器学习笔记(二)---- 线性回归
  • 原文地址:https://www.cnblogs.com/LeimOO/p/1634786.html
Copyright © 2011-2022 走看看