1、業務背景介紹
1)tomcat集群通過資料庫的唯一索引來處理併發問題,比如username的唯一性,這樣業務**裡面可以不需要寫同步邏輯;
2)儲存使用者的業務邏輯使用事務,先儲存使用者資訊,再統計新增使用者數,這個時候新增使用者數和資料庫中的有效資料記錄會不一致,
2、原因分析
儲存使用者的業務邏輯因為使用事務,儲存使用者資訊時需要在函式執行完才提交,相當於相同username的記錄儲存時函式返回不會拋異常,會繼續執行記憶體更新新增使用者的邏輯,當在函式執行完執行提交時,相同username的記錄會丟擲key唯一的異常,但是這時記憶體的使用者計數已經更新了,這樣就導致了新增使用者的記憶體計數和資料庫的有效記錄不一致
總結,使用事務的時候,一定要注意記錄是在函式執行完統一提交的,若業務邏輯中有依賴記錄成功儲存的條件,這時事務操作是不合適的。
Spring 事務使用的注意事項
為什麼 因為 transactional直接加在類或者介面上,transactional註解會對類或者介面裡面所有的public方法都有效 相當於所有的public方法都加上了 transactional註解,而且註解帶的引數都是一樣的 第一影響效能,可能有些方法我不需要 transactional...
batis plus事務使用
service實現類 service transactional propagation propagation.nested,isolation isolation.default,readonly false,rollbackfor restexception.class 加在類上面,下面方法預...
java事務使用
在web.xml中開啟對事物註解的解析 在方法上加上事務註解,propagation屬性在說明在 這裡,rollbackfor指定方法丟擲什麼異常後自動回滾。transactional propagation propagation.required,rollbackfor runtimeexcep...