【问题标题】:Why is SessionFactory in NHibernate a factory?为什么 NHibernate 中的 SessionFactory 是工厂?
【发布时间】:2011-04-16 15:09:52
【问题描述】:

Factory 后缀代表什么?

【问题讨论】:

    标签: nhibernate sessionfactory


    【解决方案1】:

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

    通过同样的措施 - ProxyFactoryFactory 创建一个可以生产代理的工厂。它解决的更大问题是它允许在代码中保持一定程度的抽象,以便两个不同的模块无需了解彼此的实现细节(即具体实例)即可协同工作。

    如果我们在想要打开会话时必须创建一个新的 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】:

      因为它的唯一职责是创建一个 Session:一个生产 Sessions 的工厂。

      【讨论】:

        【解决方案3】:

        factory 是一种设计模式。它是一个创建对象的类。会话工厂创建会话。

        【讨论】:

          猜你喜欢
          • 2011-02-10
          • 2016-06-16
          • 2018-08-13
          • 2013-05-11
          • 2011-04-03
          • 1970-01-01
          • 2011-01-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多