PROPAGATION_NESTED |
如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與PROPAGATION_REQUIRED類 似的操作。 |
</tr>
</tbody>
</table>
spring 事務注解
默認遇到throw new RuntimeException("...");會回滾
需要捕獲的throw new Exception("...");不會回滾
// 指定回滾@Transactional(rollbackFor=Exception.class)
public void methodName() { // 不會回滾
throw new Exception("...");
}
//指定不回滾@Transactional(noRollbackFor=Exception.class)
public ItimDaoImpl getItemDaoImpl() { // 會回滾
throw new RuntimeException("注釋");
}
// 如果有事務,那么加入事務,沒有的話新建一個(不寫的情況下)
@Transactional(propagation=Propagation.REQUIRED)
// 容器不為這個方法開啟事務
@Transactional(propagation=Propagation.NOT_SUPPORTED)
// 不管是否存在事務,都創建一個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務
@Transactional(propagation=Propagation.REQUIRES_NEW)
// 必須在一個已有的事務中執行,否則拋出異常
@Transactional(propagation=Propagation.MANDATORY)
// 必須在一個沒有的事務中執行,否則拋出異常(與Propagation.MANDATORY相反)
@Transactional(propagation=Propagation.NEVER)
// 如果其他bean調用這個方法,在其他bean中聲明事務,那就用事務.如果其他bean沒有聲明事務,那就不用事務.
@Transactional(propagation=Propagation.SUPPORTS)
/*
public void methodName(){
// 本類的修改方法 1
update();
// 調用其他類的修改方法
otherBean.update();
// 本類的修改方法 2
update();
}
other失敗了不會影響 本類的修改提交成功
本類update的失敗,other也失敗
*/
@Transactional(propagation=Propagation.NESTED)
// readOnly=true只讀,能插入,但不能更新,刪除
@Transactional (propagation = Propagation.REQUIRED,readOnly=true)
// 設置超時時間
@Transactional (propagation = Propagation.REQUIRED,timeout=30)
// 設置數據庫隔離級別
@Transactional (propagation = Propagation.REQUIRED,isolation=Isolation.DEFAULT)</pre><br />
本文由用戶
ec3y 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
sesese色