ホームページ データベース mysql チュートリアル mybatis并发问题解决,参考hibernate

mybatis并发问题解决,参考hibernate

Jun 07, 2016 pm 04:10 PM
hibernate mybatis 同時 解決する 質問

银行两操作员同时操作同一账户就是典型的例子。比如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 时则抛出乐观锁并发修改异常。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Black Shark携帯電話の電源が入らない問題を解決する方法を教える5つのヒント! Black Shark携帯電話の電源が入らない問題を解決する方法を教える5つのヒント! Mar 24, 2024 pm 12:27 PM

Black Shark携帯電話の電源が入らない問題を解決する方法を教える5つのヒント!

Java 関数の同時実行性とマルチスレッド化によってパフォーマンスはどのように向上するのでしょうか? Java 関数の同時実行性とマルチスレッド化によってパフォーマンスはどのように向上するのでしょうか? Apr 26, 2024 pm 04:15 PM

Java 関数の同時実行性とマルチスレッド化によってパフォーマンスはどのように向上するのでしょうか?

Golang API 設計における同時実行性とコルーチンの適用 Golang API 設計における同時実行性とコルーチンの適用 May 07, 2024 pm 06:51 PM

Golang API 設計における同時実行性とコルーチンの適用

簡単な手順:VSCodeの中国語インターフェースが表示できない問題を解決する 簡単な手順:VSCodeの中国語インターフェースが表示できない問題を解決する Mar 25, 2024 am 11:57 AM

簡単な手順:VSCodeの中国語インターフェースが表示できない問題を解決する

Win8 コンピュータのパスワードを忘れた場合はどうすればよいですか?簡単解決! Win8 コンピュータのパスワードを忘れた場合はどうすればよいですか?簡単解決! Mar 27, 2024 pm 05:12 PM

Win8 コンピュータのパスワードを忘れた場合はどうすればよいですか?簡単解決!

PHP マルチスレッド関数における同時実行性の問題の解決 PHP マルチスレッド関数における同時実行性の問題の解決 May 01, 2024 pm 09:45 PM

PHP マルチスレッド関数における同時実行性の問題の解決

Go 同時関数の単体テストのガイド Go 同時関数の単体テストのガイド May 03, 2024 am 10:54 AM

Go 同時関数の単体テストのガイド

Java 関数ライブラリで一般的に使用される同時実行ツールは何ですか? Java 関数ライブラリで一般的に使用される同時実行ツールは何ですか? Apr 30, 2024 pm 01:39 PM

Java 関数ライブラリで一般的に使用される同時実行ツールは何ですか?

See all articles