何时使用OpenSession()和GetCurrentSession()

时间:2016-08-15 15:23:30

标签: java hibernate

  1. OpenSession()始终打开一个新会话。
  2. GetCurrentSession()将返回绑定到上下文的会话
  3. GetCurrentSession()与OpenSession()比较快,所以我可以假设GetCurrentSession优于OpenSession()

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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