我們的應用程序主要使用Hibernate的版本支持進行樂觀鎖定。我們計劃在一個特定的場景中實施悲觀鎖定。我對悲觀鎖定沒有太多經驗,所以請原諒這個問題聽起來天真。如何在Oracle中回滾/超時「選擇更新」鎖?
當用戶顯示更新條目的意向時 - 我們使用「select for update」鎖定相應的DB行。現在,如果這個用戶花費很長時間來提交他的更改在鎖定後忘記了它,我們如何使用某種超時/回滾機制解鎖此鎖定?因此該行不會長時間保持鎖定狀態,並且不允許所有其他用戶進行編輯。
我懷疑這是否會在我們正在使用的Weblogic-JTA-Spring事務機制中處理 - 我們已經有了30分鐘的事務超時。 (??)
因此,這個回滾應該直接在Oracle級別處理。如果是,那麼如何?請建議最好的方式來處理這種情況,這樣鎖不會留下太久。
配置。這個級別的會話超時是多少? – fge
好的我做了一些搜索,得到這個:SELECT PROFILE,LIMIT FROM DBA_PROFILES WHERE RESOURCE_NAME ='IDLE_TIME';我們的數據庫中的哪一個說UNLIMITED - 我認爲這意味着沒有會話超時。對? – haps10
您可以將回調函數的等價物傳遞給您的方法,以輪詢執行時間。一旦它達到x秒你回滾會議......或類似的東西。 – Ben