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

为什么NHibernate的SessionFactory是一个工厂?,nhibernate,sessionfactory,Nhibernate,Sessionfactory,工厂后缀代表什么?因为它的唯一责任是创建一个会话:一个生产会话的工厂。a是一种设计模式。它是一个创建对象的类。会话工厂创建会话。工厂对象的唯一目的是创建(实例化)其他对象。NHibernate使用SessionFactory来管理ISession的创建 按照同样的标准,ProxyFactoryFactory创建了一个可以生成代理的工厂。它解决的更大的问题是,它允许在代码中保持一定的抽象级别,这样两个不同的模块就不需要为了协同工作而了解彼此的实现细节(即具体实例) 如果我们必须在打开会话时创建一个

工厂后缀代表什么?

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

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

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

按照同样的标准,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();
而不是必须管理所有这些依赖关系;)