Spring Server / Client Sessions和Hibernate Sessions

时间:2011-03-21 11:46:26

标签: java hibernate spring session httpsession

我使用Spring 3和Hibernate 3.6开发Web应用程序 - 我很新,我想知道我是否真的理解会话是如何工作的。

是否正确,由会话ID标识的服务器和客户端之间的会话与休眠会话不同?

服务器和客户端之间的会话始终是HttpSession。(?)什么时候创建?当用户登录时,或者当匿名用户请求页面时(不受保护)?

httpsession和hibernate-sessions之间有什么联系吗?是否由sessionfactory创建的Hibernate会话与httpsession没有连接?我不确定hibernate使用这样的命令引用哪个会话:

this.sessionFactory.getCurrentSession().save(object);

这个getCurrentSession():这个休眠会话活动了多长时间?用户登录的整个时间?或仅用于一个事务(可以包括多个数据操作?)

我很抱歉这个问题可能很容易回答,但大多数文件都是英文的,如果不是,那么母语理解有时很难(主要是因为经常使用“会话”这个词)

感谢您帮助我理解这个话题! : - )

1 个答案:

答案 0 :(得分:6)

  

是不是正确的,Sessions   在服务器和客户端之间,确定   通过会话ID,不同于   休眠会议?

是的,完全不同。

参考:(javax.servlet)HttpSession,(Hibernate)Session

  

服务器和客户端之间的会话   总是一个HttpSession。(?)什么时候   产生的?用户登录时或也是   当匿名用户请求页面时   (没有保障)?

参见 Java EE Tutorial > Maintaining Client State

  

之间是否存在任何联系   httpsession和hibernate-sessions?

不,虽然OpenSessionInViewFilter可以确保每个HTTP请求都有一个Hibernate Session(每个请求一个Hibernate会话,而不是每个Web会话)。

  

是否创建了Hibernate会话   sessionfactory没有连接到   HttpSession的?

是的,通常。

  

我不确定是哪一个   session hibernate引用了一个   像这样的命令:   “this.sessionFactory.getCurrentSession()保存(对象);”

休眠Session

  

这个“getCurrentSession()”:如何   这个hibernate会话有效吗?   用户记录的整个时间   在?或仅用于一次交易(其中   可以包括多个数据操作?)

参见 Hibernate Reference > Session and Transaction Scopes