除了下面列出的,我们还有其他的区别吗?并请验证下面的内容是否正确
SessionFactory
对象每个应用程序一个,而Session
对象每个客户端一个。SessionFactory
用于创建和管理Sessions
。Session
用于为映射类提供CRUD接口,并提供更灵活的Criteria API
访问。SessionFactory
线程安全,而Session
不是线程安全的。
除了下面列出的,我们还有其他的区别吗?并请验证下面的内容是否正确
SessionFactory
对象每个应用程序一个,而 Session
对象每个客户端一个。SessionFactory
用于创建和管理 Sessions
。 Session
用于为映射类提供CRUD接口,并提供更灵活的 Criteria API
访问。SessionFactory
线程安全,而 Session
不是线程安全的。SessionFactory
是一个实例,它将创建Session
对象。SessionFactory
是用于创建Session
对象的工厂类。它在整个应用程序中可用,而Session
仅在特定事务中可用。
Session
的生命周期很短,而SessionFactory
对象的生命周期很长。 SessionFactory
提供第二级缓存,而Session
提供第一级缓存。
SessionFactory 是一个接口。可以通过提供 Configuration 对象来创建 SessionFactory,该对象将包含从 hibernate.cfg.xml 文件或 hibernate.properties 文件中获取的所有与数据库相关的属性详细信息。SessionFactory 是 Session 对象的工厂。
在任何应用程序中,我们可以为每个数据库创建一个 SessionFactory 实现。如果您的应用程序引用了多个数据库,则需要为每个数据库创建一个 SessionFactory。
SessionFactory 是一个重量级对象;通常在应用程序启动时创建并保留以供后续使用。SessionFactory 是一个线程安全的对象,由应用程序的所有线程使用。
Session 用于与数据库建立物理连接。Session 对象轻巧易用,设计用于每次需要与数据库进行交互时实例化。持久化对象通过 Session 对象保存和检索。
Session 对象不应该长时间保持打开状态,因为它们通常不是线程安全的,并且应该根据需要创建和销毁它们。Session 的主要功能是为映射的实体类的实例提供创建、读取和删除操作。
SessionFactory:
Session:
SessionFactory是Hibernate中单个数据存储的概念,是线程安全的,因此许多线程可以同时访问它并请求会话和编译映射的不可变缓存。
不,Session不是线程安全的。Session是一个轻量级且非线程安全的对象(不,您不能在线程之间共享它),代表与数据库的单个工作单元。Session由SessionFactory打开,当所有工作完成时关闭。Session是持久化服务的主要接口。会话惰性地获取数据库连接(即仅在需要时才获取)。
Session Factory 可以被视为工厂,它将为特定数据源或数据库产生会话。换句话说,如果我们的应用程序有多个数据库,则应创建与数据库数量相同的 Session Factory。因此,Session Factory 是长期存在的。
Session 是短暂的实例,用于执行离散的数据库事务。通常,在任何时候,如果需要与数据库进行交易,则从适当的 Session Factory 实例获取短暂的会话对象,并在完成交易后,该实例不再可用。