何时使用 OpenSession() 和 GetCurrentSession()

sur*_*esh 1 java hibernate

  1. OpenSession() 总是打开一个新会话。
  2. GetCurrentSession() 将返回绑定到上下文的会话

GetCurrentSession() 比 OpenSession() 快,所以我可以假设 GetCurrentSession 比 OpenSession() 好

在什么情况下我应该使用 openSession() 和 GetCurrentSession()

小智 5

openSession-->如果我们使用这个方法,我们需要flush()和close()会话。它不会自动刷新和关闭()。当我们决定自己管理 Session 时,我们可以使用这种方法。

getCurrentSession-->每当第一次调用 getCurrentSession() 时都会打开一个会话,并在事务结束时关闭该会话。如果一个会话不存在,这将创建一个全新的会话,或者如果一个已经存在,则使用现有会话。它自动将 auto-flush 和 auto-close 属性配置为 true 表示会话将自动刷新和关闭。当我们的事务运行很长时间时,我们可以使用 getCurrentSession() 方法。

getCurrentSession 通常就足够了。openSession 提供并促进了对会话存储和管理位置的更高级别的管理。这当然是一个高级选项,但确实适合非常聪明的开发人员的需要,他们正在用会话做一些漂亮的事情。

注意:使用 getCurrentSession() 创建会话将在提交或回滚时自动终止,使用 openSession() 创建会话将需要手动终止