为什么每个应用程序仅使用一个SessionFactory对象?


问题内容

为什么每个应用程序仅使用一个SessionFactory对象?每个应用程序使用单个会话工厂对象有什么优势?


问题答案:

会话工厂对象将使用 单例 设计模式来实现。SessionFactory的实例是 线程安全的
,通常在整个应用程序中共享。由于这些对象很重,因为它们包含连接信息,hibernate配置信息和映射文件,位置路径。因此,创建实例数将使我们的应用程序 负担沉重
。但是会话对象不是线程安全的。简而言之,它是-每个应用程序一个SessionFactory对象,每个客户端一个Session对象。

因此,每个数据源将是一个SessionFactory。您的应用程序可能具有多个DataSource,因此您在该实例中可能具有多个SessionFactory。但是,您不希望在应用程序中多次创建SessionFactory。

优点 :显然,它可以提高您的应用程序的性能:)

更新-从Hibernate
Doc中
提取

SessionFactory的内部状态是不可变的。创建后,便会设置此内部状态。此内部状态包括有关对象/关系映射的所有元数据。