@Transactional 鎖表嗎?關於Spring注解@Transactional和SQL for update 的一些理解


@Transactional 鎖表嗎?關於Spring注解@Transactional和SQL for update 的一些理解

工作前幾年中,一直接觸的是JDBC原生的事務處理方式。

1. 獲取 connection

2. try {

  con = getDBConnection();

  // sql for update 鎖A表, B表。。表記錄

  //增刪改查

       多個業務處理,

  

      con.commit()

  //最后提交

3. }  catch Exception {

  con. 回滾

4. finally {

  con.close();

}

后期用了spring 后, @Transactional 實際上代替了try catch finally . 還有 con獲取,提交,回滾的操作。

但是 鎖表記錄的動作,並不在 這個注解的職責里。 

所以,在處理關鍵事務時,還是得在 dao層 更新記錄前,查詢記錄加行級鎖的。 俗稱悲觀鎖, 或者 不加鎖使用version判斷。俗稱樂觀鎖。

來搞一下的。

這兩個是不同的職責范圍,即:@Transactional注解不包含for update.

。如此。而已。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM