在我的Java WEb中,我使用了spring MVC的事務(wù),我在service層中有個方法是用了@Transaction注解的,這個方法會update數(shù)據(jù)庫中的數(shù)據(jù),然后又查詢數(shù)據(jù)庫中的數(shù)據(jù)。情況是這樣,當(dāng)有多個請求時,生成多個線程進(jìn)入這個方法,然后我發(fā)現(xiàn),在同一個方法里,update之后再查看這個數(shù)據(jù),是可以看到數(shù)據(jù)確實(shí)被改變了的,但是這個改變在其他線程中是看不到的。我的問題是,同一個方法即使多個請求進(jìn)來不應(yīng)該是進(jìn)入同一個事務(wù)嗎?這些線程之間做的數(shù)據(jù)更新不應(yīng)該是彼此可見的嗎?如果我想讓同一個方法注冊的事務(wù)都屬于同一個事務(wù)應(yīng)該怎么做呢?
4 回答

紫衣仙女
TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個贊
肯定不是同一個事務(wù)啊。
Spring 就是使用ThreadLocal
來存儲Connection
的,不同的線程Connection
肯定不一樣,所以不可能會在同一個事務(wù)中。org.springframework.jdbc.datasource.DataSourceUtils

大莫一秋
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個贊
第一、數(shù)據(jù)可見性是數(shù)據(jù)庫本身的隔離級別決定的 不是事物要處理的 第二 、一個方法所有線程都是同一個事物?天吶 怎么有這樣的想法

大莫一秋
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個贊
第一、數(shù)據(jù)可見性是數(shù)據(jù)庫本身的隔離級別決定的 不是事物要處理的 第二 、一個方法所有線程都是同一個事物?天吶 怎么有這樣的想法
添加回答
舉報
0/150
提交
取消