java - Spring @Transaction注解的方法在多线程中是否属于同一个事务
巴扎黑
巴扎黑 2017-04-18 10:32:49
0
2
492

在我的Java WEb中,我使用了spring MVC的事务,
我在service层中有个方法是用了@Transaction注解的,这个方法会update数据库中的数据,然后又查询数据库中的数据。
情况是这样,当有多个请求时,生成多个线程进入这个方法,然后我发现,在同一个方法里,update之后再查看这个数据,是可以看到数据确实被改变了的,但是这个改变在其他线程中是看不到的。
我的问题是,同一个方法即使多个请求进来不应该是进入同一个事务吗?这些线程之间做的数据更新不应该是彼此可见的吗?如果我想让同一个方法注册的事务都属于同一个事务应该怎么做呢?

巴扎黑
巴扎黑

모든 응답(2)
Ty80

확실히 똑같은 것은 아닙니다.
Spring은 ThreadLocal을 사용하여 Connection을 저장합니다. 서로 다른 스레드는 서로 다른 Connection을 가져야 하므로 동일한 트랜잭션에 있을 수 없습니다.
org.springframework.jdbc.datasource.DataSourceUtils

巴扎黑

JavaBean은 기본 멀티스레딩을 구현합니다...

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿