在Hibernate中使用getCurrentSession()和openSession()检索会话

时间:2014-02-25 09:48:42

标签: hibernate

我是hibernate的新手,我在使用getCurrentSession()和openSession()检索会话时有点困惑,许多文章提到getCurrentSession创建一个全新的会话(如果尚未存在)并且如果没有创建新会话会话已经可用,另一方面,openSession创建了一个全新的会话。

  1. 这里我有一个困惑,openSession()总是会创建一个全新的会话吗?
  2. hibernate池会话是否在getCurrentSession()中使用相同的会话?
  3. 如果我犯了任何错误,请你帮我澄清一下并道歉

    非常感谢

1 个答案:

答案 0 :(得分:1)

  1. openSession()将会话绑定到当前上下文。默认上下文为Thread,也可以使用自定义过滤器或OpenSessionInViewFilter
  2. 绑定在HttpRequest级别
  3. 否。 Hibernate没有实际的连接池。看看this question。只要在该特定上下文中第一次调用getCurrentSession(),就会打开会话。之后,为了找到已经存在的会话,Hibernate使用CurrentSessionContext来确定当前上下文,并将返回绑定到该特定上下文的会话。大多数应用程序服务器将会话与使用基础Thread对象创建的ThreadLocal相关联。