spring 事務注解

jopen 9年前發布 | 19K 次閱讀 Spring JEE框架

Spring事務傳播行為類型

事務傳播行為類型

</td>

說明

</td> </tr>

PROPAGATION_REQUIRED

</td>

如果當前沒有事務,就新建一個事務,如果已經存在一個事務中,加入到這個事務中。這是最常見的選擇。

</td> </tr>

PROPAGATION_SUPPORTS

</td>

支持當前事務,如果當前沒有事務,就以非事務方式執行。

</td> </tr>

PROPAGATION_MANDATORY

</td>

使用當前的事務,如果當前沒有事務,就拋出異常。

</td> </tr>

PROPAGATION_REQUIRES_NEW

</td>

新建事務,如果當前存在事務,把當前事務掛起。

</td> </tr>

PROPAGATION_NOT_SUPPORTED

</td>

以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。

</td> </tr>

PROPAGATION_NEVER

</td>

以非事務方式執行,如果當前存在事務,則拋出異常。

</td> </tr>

PROPAGATION_NESTED

</td>

如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與PROPAGATION_REQUIRED類 似的操作。

</td> </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> <div class="BlogCopyright">原文地址:<a href="/misc/goto?guid=4959622019310432637" target="_blank">http://www.cnblogs.com/yjhrem/articles/3171476.html</a> </div>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!
  • sesese色