会话与会话工厂之间的差异 - Hibernate?

use*_*036 14 hibernate

除了以下之外,我们还有其他任何差异吗?另外请验证以下内容是否正确

  1. SessionFactory对象是每个应用程序一个,Session对象是每个客户端一个.
  2. SessionFactory是创造和管理Sessions.Session是为映射类提供CRUD接口,并且还可以访问更通用的类Criteria API.
  3. SessionFactory是线程安全的,因为Session它不是线程安全的

Bal*_*raj 20

首先,询问这些接口之间的区别没有任何意义.似乎要问汽车制造厂和汽车之间的区别.制造工厂是生产汽车的地方.同样,SessionFactory是一个将创建Session对象的实例.


小智 15

SessionFactorySession对象的工厂类.它适用于整个应用程序,而a Session仅适用于特定交易.

Session是短暂的,而SessionFactory对象是长寿命的.SessionFactory提供二级缓存并Session提供第一级缓存.


小智 9

SessionFactory是一个接口。SessionFactory 可以通过提供 Configuration 对象来创建,该对象将包含从 hibernate.cfg.xml 文件或 hibernate.properties 文件中提取的所有与 DB 相关的属性详细信息。SessionFactory 是 Session 对象的工厂。

我们可以在任何应用程序中为每个数据库创建一个 SessionFactory 实现。如果您的应用程序引用多个数据库,那么您需要为每个数据库创建一个 SessionFactory。

SessionFactory 是一个重量级的对象;它通常在应用程序启动期间创建并保留以备后用。SessionFactory 是一个线程安全对象,由应用程序的所有线程使用。

会话用于获取与数据库的物理连接。Session 对象是轻量级的,旨在在每次需要与数据库进行交互时进行实例化。持久对象通过 Session 对象进行保存和检索。

会话对象不应长时间保持打开状态,因为它们通常不是线程安全的,应根据需要创建和销毁它们。Session 的主要功能是为映射实体类的实例提供、创建、读取和删除操作。


小智 7

会话工厂

  1. 每个数据源/数据库都有一个实例。
  2. 它是线程安全的。
  3. 它是一个重量级对象,因为它维护数据源、映射、hibernate 配置信息等。
  4. SessionFactory 将创建和管理会话。
  5. 如果您有 4 个数据源/数据库,那么您必须创建 4 个会话工厂实例。
  6. sessionfactory 是一个不可变的对象,当服务器初始化自身时,它将被创建为单例。

会议

  1. 它是每个客户端/线程/一个事务一个实例。
  2. 它不是线程安全的。
  3. 它很轻。
  4. 会话将使用 sessionfactory.openSession() 打开,并且将完成一些数据库操作,最后会话将使用 session.close() 关闭。