0
我想了解'Hibernate會話不是線程安全的'的含義。我已經知道了(如果我錯了,請糾正我):休眠會話和線程安全
- 在非JTA環境中的會話保存在Thread Local中。所以它被綁定到當前線程。
- 在新線程中調用getCurrentSession()會將新會話與其自己的線程本地關聯。
- 假設我們在2個線程(T1,T2)之間共享一個實體,在T1中加載並在T2中使用,我們可能會遇到延遲加載等問題,因爲T1和T2中的會話不同。
這解釋了在不同會話之間共享實體時可能會出現什麼問題。
我無法理解的是當一個會話在2個或更多線程之間共享時可能出現的問題。我知道Session中的方法不是線程安全的,會導致競爭條件等,但不清楚如何?如果有人能夠用示例進行解釋或列出一個或多個場景來澄清,我將不勝感激。
在此先感謝
謝謝弗拉德。有沒有一個例子或應用場景如何可能出錯?這將進一步幫助我。 – Mustafa 2015-02-11 16:24:25
我沒有任何示例,但您可以輕鬆地自行嘗試。 – 2015-02-11 16:44:04