springBoot框架方法上面添加@Transactional注解的使用 springBoot框架類上面添加@Transactional注解的使用postgresql數據庫


@Transactional如果在一個方法上面添加@Transactional注解

查看postgresql數據庫當前的事務隔離級別:

 

 

 

@Transactional

public void updateData(){

  aService.updateA();//更新A表

  bService.updateB();//更新B表

  cService.updateC();//更新C表

}

假設,如果每一個service只會對應的更新他所對應的這張表,下面這三個方法上面加不加@Transactional效果都是一樣的。不會對最終的結果產生影響。

Pubic void updateA(){

    //只進行更新A表的操作

}

Pubic void updateB(){

    //只進行更新B表的操作

}

Pubic void updateC(){

    //只進行更新C表的操作

}

這種架構,的意思是將ABC三張表的更新操作綁定成一個原子,更新的時候,要成功都成功,要失敗都失敗。

如果將上面的架構換成下面這種模式:

public void updateData(){

aService.updateA();//更新A表

if(1==1){

Throw new BussinessException(“模擬發生異常”);

}

bService.updateB();//更新B表

cService.updateC();//更新C表

}

假設,如果每一個service只會對應的更新他所對應的這張表,下面這三個方法上面加不加@Transactional效果都是一樣的。不會對最終的結果產生影響。

Pubic void updateA(){

    //只進行更新A表的操作

}

Pubic void updateB(){

    //只進行更新B表的操作

}

Pubic void updateC(){

    //只進行更新C表的操作

}

我們會發現程序拋出了異常,但是A表成功的更新了數據。

 

如果我們在類上面添加@Transactional 注解

@Transactional

public class Test{

  

public void updateData(){

  aService.updateA();//更新A表

  bService.updateB();//更新B表

  cService.updateC();//更新C表

}

  

}

 

Pubic void updateA(){

    //只進行更新A表的操作 假設A表中有兩條三條數據要進行更新操作,

    //我在更新第二條數據的時候手動拋出一個異常

}

 

這個時候,我們進行測試,會發現,所有的數據都不會進行更新,這就是類級別的@Transactional的作用。


免責聲明!

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



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