2011-05-31 51 views
1

是否可以創建持續許多用戶請求的悲觀鎖定?許多用戶請求的悲觀鎖定

我很感興趣,看看是否有可能在Java EE中使用Hibernate或PHP使用Doctrine或Propel。我通過使用Doctrine 2嘗試了這一點,但僅在數據庫級別(每個用戶請求)它不可能。

回答

3

這是可能的,但很多(手動)的工作。 Hibernate和J2EE的所有框架都使用過濾器在收到請求時開始會話,並在發送響應時進行提交。

因此,您需要做的是爲您的servlet禁用此過濾器,使用工廠創建Hibernate會話,將其放入用戶的HTTP會話中,然後使用該會話進行工作。

請注意,沒有安全的方式來結束這樣的會話,因爲用戶可以簡單地停止使用瀏覽器幾個小時。

一些可能更加有用和穩定的東西是「臨時」對象:當用戶進行更改時,將臨時對象保存到數據庫中,以遮蔽「真實」對象。這使您可以立即保存任何更改。當用戶對結果滿意時,他可以單擊一個按鈕,並且可以將臨時對象中的數據複製回真實的對象(當然,樂觀鎖定)。