Hibernate框架-为什么一个会话是不够的



我现在正在使用Java中的Hibernate框架,我需要理解为什么我们应该为每个进程使用一个会话。为什么我们不在整个程序中使用一个全局会话?

您不需要为一个进程使用一个会话,而是为一个线程使用一个时间点。限制应该针对线程,而不是进程。在JVM进程中,可以有多个线程使用数据库连接池。当使用连接池时,线程之间的连接被重用,这样事务边界就不会重叠,这是使用一个会话的主要思想,即线程的连接。参见事务和并发控制

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

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

相关内容

最新更新