mybatis 並發問題解決,參考hibernate,mybatishibernate

來源:互聯網
上載者:User

mybatis 並發問題解決,參考hibernate,mybatishibernate

       銀行兩操作員同時操作同一賬戶就是典型的例子。比如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 時則拋出樂觀鎖並發修改異常。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.