tin*_*tin 18 java orm persistence hibernate
我两者之间有点困惑.据我所知,两者都返回hibernate会话,SessionFactory.getCurrentSession()返回基于<property name="current_session_context_class">hibernate.cfg.xml中设置的属性的上下文会话我们不应该总是采用这种方法吗?
增加了什么附加价值SessionFactory.openSession()?
Har*_*hra 38
无论何时sf.getCurrentSession()第一次调用,都会打开一个会话.如果一个会话不存在,则会创建一个全新的会话,如果已存在,则会使用现有会话.
在Tomcat中,这会将会话与使用基础ThreadLocal对象创建的线程相关联.但是由于Tomcat使用线程池,因此完全有可能请求可能会收到一个已经与之关联的会话的线程,从而引入甚至不创建全新会话的可能性.另一件事是您获得的会话sf.getCurrentSession()被自动刷新和关闭.
sf.openSession()另一方面,该方法创建一个新会话,但不会尝试将其与一个线程相关联.但是请记住sf.openSession()引入另一个障碍,它希望用户自己处理会话的关闭和刷新,而不是让Hibernate自动为我们做.
sf.getCurrentSession()通常就足够了.sf.openSession()提供并促进对会话存储和管理的更高级别的管理.这当然是一个先进的选择.
| 归档时间: |
|
| 查看次数: |
15781 次 |
| 最近记录: |