2011-03-21 203 views
4

我使用Spring 3和Hibernate 3.6開發一個web應用程序 - 即時通訊新和我想知道如果我真的瞭解會議如何工作。春季服務器/客戶端會話和休眠會話

服務器和客戶端之間的會話(由會話ID標識)與休眠會話不同,是否正確?

服務器和客戶端之間的會話總是一個HttpSession。(?)什麼時候創建?當用戶登錄時,或者當匿名用戶請求頁面時(不安全)?

httpsession和hibernate-sessions之間是否存在任何連接?由sessionfactory創建的Hibernate會話是否與httpsession沒有連接?林不知道哪個會話休眠與這樣的命令闖民宅:

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

getCurrentSession():多長時間是這樣的Hibernate Session活躍?整個用戶登錄的時間?或只是一個交易(可以包括多個數據操作?)

對不起,這個問題可能完全容易回答,但大多數文件都是英文,如果這不是問題,母語理解有時很難(主要是因爲「會話」一詞經常使用)

感謝您幫助我理解此主題! :-)

回答

6

它是正確的,該會議 服務器和客戶端之間,由會話ID標識 ,從 休眠會議有什麼不同?

是的,完全不同。

參考:(?)(的javax.servlet)HttpSession,(休眠)Session

服務器和客戶端之間的會話 始終是一個HttpSession當它 產生的?當用戶登錄時,或者當匿名用戶請求頁面 (這是不安全的)時 ?

Java EE Tutorial > Maintaining Client State

是有 的HttpSession和休眠的會話之間有聯繫嗎?

沒有,儘管OpenSessionInViewFilter可以確保有一個Hibernate Session適用於所有HTTP請求(每個請求一個Hibernate的Session,不是每個Web會話)。

由 的SessionFactory沒有連接到 HttpSession中創建Hibernate的會話?

是的,通常。

林不知道哪個 會話休眠與這樣的 命令闖民宅: 「this.sessionFactory.getCurrentSession()保存(對象);」。

休眠Session

本 「的getCurrentSession()」:如何 長這個Hibernate的Session活躍? 在用戶登錄的整個過程中 in?或者只是一個事務( 可以包括多個數據的操作?)

Hibernate Reference > Session and Transaction Scopes

+0

感謝您的快速答覆。通過你給我的來源閱讀,我得到了一些更多的問題: 1.當HttpSession是一個接口,一個「HttpSession的對象」如何能夠代表一個會話?不應該有一個實現HttpSession的具體類嗎? – nano7 2011-03-21 12:48:13

+0

2.我可能很愚蠢,但是我理解正確,會話是在用戶第一次與服務器連接時創建的(沒有會話ID)。他不能爲此登錄。當會話超時(例如30分鐘後)或用戶(如果他已登錄)時,會話結束 – nano7 2011-03-21 12:48:30

+0

3.通常,當沒有特定的配置時,爲一個請求創建一個hibernate會話。是不是數據庫操作完成時還爲請求自動創建的休眠會話? 謝謝你:-) – nano7 2011-03-21 12:49:12