mybatis并发问题解决,参考hibernate
Jun 07, 2016 pm 04:10 PM银行两操作员同时操作同一账户就是典型的例子。比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户减去 50元,A先提交,B后提交。 最后实际账户余额为1000-50=950元,但本该为 1000100-50=1050。这就是典型的并发
银行两操作员同时操作同一账户就是典型的例子。比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户减去 50元,A先提交,B后提交。 最后实际账户余额为1000-50=950元,但本该为 1000+100-50=1050。这就是典型的并发问题
一个简单的解决办法:更新的时候给版本号字段加上 1,然后 UPDATE 会返回一个更新结果的行数,通过这个行数去判断。
update account set price = #price #,version=version+1
where id=#id# and version=#vsersion#
如果更新执行返回的数量是 0 表示产生并发修改了,需要重新获得最新的数据后再进行更新操作。
Hibernate、JPA 等 ORM 框架或者实现,是使用版本号,再判断 UPDATE 后返回的数值,如果这个值小于 1 时则抛出乐观锁并发修改异常。

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Black Shark 휴대폰이 켜지지 않는 문제를 해결하는 방법을 알려주는 5가지 팁!

Java 기능의 동시성과 멀티스레딩이 어떻게 성능을 향상시킬 수 있습니까?

간단한 단계: VSCode의 중국어 인터페이스를 표시할 수 없는 문제를 해결합니다.

Win8 컴퓨터에서 비밀번호를 잊어버린 경우 어떻게 해야 합니까? 쉬운 솔루션!

Java 함수 라이브러리에서 일반적으로 사용되는 동시성 도구는 무엇입니까?
