【问题标题】:When to use OpenSession() and GetCurrentSession() [duplicate]何时使用 OpenSession() 和 GetCurrentSession() [重复]
【发布时间】:2016-12-21 20:00:22
【问题描述】:
  1. OpenSession() 总是打开一个新会话。
  2. GetCurrentSession() 将返回绑定到上下文的会话

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

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

【问题讨论】:

  • 与 JPA API 完全无关。删除标签

标签: java hibernate


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2011-12-24
    • 2015-11-12
    • 1970-01-01
    • 2016-04-20
    • 2012-12-10
    • 1970-01-01
    • 2012-07-06
    • 2014-01-30
    • 2014-06-21
    相关资源
    最近更新 更多