1、spring事務控制放在service層,在service方法中乙個方法呼叫service中的另乙個方法,預設開啟幾個事務?
spring的事務傳播方式預設是propagation_required,判斷當前是否已開啟乙個新事務,有則加入當前事務,否則新開乙個事務(如果沒有就開啟乙個新事務),所以答案是開啟了乙個事務。
2、spring 什麼情況下進行事務回滾?
spring、ejb的宣告式事務預設情況下都是在丟擲unchecked exception後才會觸發事務的回滾
unchecked異常,即執行時異常runntimeexception 回滾事務;
checked異常,即exception可try{}捕獲的不會回滾.當然也可配置spring引數讓其回滾.
spring的事務邊界是在呼叫業務方法之前開始的,業務方法執行完畢之後來執行commit or rollback(spring預設取決於是否丟擲runtime異常).
如果丟擲runtime exception 並在你的業務方法中沒有catch到的話,事務會回滾。
一般不需要在業務方法中catch異常,如果非要catch,在做完你想做的工作後(比如關閉檔案等)一定要丟擲runtime exception,否則spring會將你的操作commit,這樣就會產生 髒資料.所以你的catch**是畫蛇添足。
面試題 Mysql事務
原子性 乙個事務 transaction 中的所有操作,要麼全部完成,要麼全部不完成,不會結束在中間某個環節。事務在執行過程中發生錯誤,會被恢復 rollback 到事務開始前的狀態,就像這個事務從來沒有執行過一樣。一致性 在事務開始之前和事務結束以後,資料庫的完整性沒有被破壞。這表示寫入的資料必須...
面試題 PHP面試題
建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...
面試題 騰訊2012面試題
問題描述 例如手機朋友網有n個伺服器,為了方便使用者的訪問會在伺服器上快取資料,因此使用者每次訪問的時候最好能保持同一臺伺服器。已有的做法是根據serveripindex qqnum n 得到請求的伺服器,這種方法很方便將使用者分到不同的伺服器上去。但是如果一台伺服器死掉了,那麼n就變為了n 1,那...