代码之家  ›  专栏  ›  技术社区  ›  Vladimir Nani

为什么NHibernate的SessionFactory是一个工厂?

  •  -1
  • Vladimir Nani  · 技术社区  · 14 年前

    工厂后缀代表什么?

    3 回复  |  直到 12 年前
        1
  •  4
  •   Kevin McKelvin    14 年前

    工厂对象的唯一目的是创建(实例化)其他对象。NHibernate使用SessionFactory来管理会话的创建。

    如果我们必须在打开会话时创建一个新的NHibernate SessionImpl,我们需要能够在本地范围内提供它的所有依赖项。下面是NHibernate中SessionFactoryImpl的代码,它实际创建了一个会话:

            SessionImpl session = new SessionImpl(connection, this, autoClose, timestamp, sessionLocalInterceptor ?? interceptor,
                                                  settings.DefaultEntityMode, settings.IsFlushBeforeCompletionEnabled,
                                                  settings.IsAutoCloseSessionEnabled, settings.ConnectionReleaseMode);
    

    我宁愿用

    sessionFactory.OpenSession();
    

        2
  •  3
  •   Andreas Paulsson    14 年前

    因为它的唯一责任是创建一个会话:一个生成会话的工厂。

        3
  •  3
  •   Stefan Steinegger    14 年前

    A factory 设计模式