1、遇到的問(wèn)題
當(dāng)我們一個(gè)方法里面有多個(gè)數(shù)據(jù)庫(kù)保存操作的時(shí)候,中間的數(shù)據(jù)庫(kù)操作發(fā)生的錯(cuò)誤。偽代碼如下:
public method() { Dao1.save(Person1); Dao1.save(Person2); Dao1.save(Person2);//假如這句發(fā)生了錯(cuò)誤,前面的兩個(gè)對(duì)象會(huì)被保存到數(shù)據(jù)庫(kù)中 Dao1.save(Person2); }
期待的情況:發(fā)生錯(cuò)誤之前的所有數(shù)據(jù)庫(kù)保存操作都回滾,即不保存
正常情況:前面的數(shù)據(jù)庫(kù)操作會(huì)被執(zhí)行,而發(fā)生數(shù)據(jù)庫(kù)操作錯(cuò)誤開(kāi)始及之后的所有的數(shù)據(jù)保存操作都將失敗。這樣子應(yīng)該都不是我們要的結(jié)果吧。
當(dāng)遇到這種情況,我們就可以使用Spring的事務(wù)解決這個(gè)問(wèn)題。
2、異常的一些基本知識(shí)
1) 異常的架構(gòu)