日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

@Transcational特性

發布時間:2023/12/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 @Transcational特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 捕獲RuntimeException
  • 捕獲Error
  • 并不捕獲Checked Exception

在方法中使用@Transcational注解時候,通過throw new Exception(),在發生異常的時候不會進行回滾,可以使用throw new RuntimeException();

也可以使用@Transactional(rollbackForClassName="Exception")來設置回滾觸發的異常類型。

事物傳播行為介紹:?

  @Transactional(propagation=Propagation.REQUIRED) :如果有事務, 那么加入事務, 沒有的話新建一個(默認情況下)
  @Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不為這個方法開啟事務
  @Transactional(propagation=Propagation.REQUIRES_NEW) :不管是否存在事務,都創建一個新的事務,原來的掛起,新的執行完畢,繼續執行老的事務
  @Transactional(propagation=Propagation.MANDATORY) :必須在一個已有的事務中執行,否則拋出異常
  @Transactional(propagation=Propagation.NEVER) :必須在一個沒有的事務中執行,否則拋出異常(與Propagation.MANDATORY相反)
  @Transactional(propagation=Propagation.SUPPORTS) :如果其他bean調用這個方法,在其他bean中聲明事務,那就用事務.如果其他bean沒有聲明事務,那就不用事務.

?

事物超時設置:

  @Transactional(timeout=30) //默認是30秒

?

事務隔離級別:

  @Transactional(isolation = Isolation.READ_UNCOMMITTED):讀取未提交數據(會出現臟讀, 不可重復讀) 基本不使用
  @Transactional(isolation = Isolation.READ_COMMITTED):讀取已提交數據(會出現不可重復讀和幻讀)
  @Transactional(isolation = Isolation.REPEATABLE_READ):可重復讀(會出現幻讀)
  @Transactional(isolation = Isolation.SERIALIZABLE):串行化

  MYSQL: 默認為REPEATABLE_READ級別
  SQLSERVER: 默認為READ_COMMITTED

臟讀?: 一個事務讀取到另一事務未提交的更新數據
不可重復讀?: 在同一事務中, 多次讀取同一數據返回的結果有所不同, 換句話說,?
后續讀取可以讀到另一事務已提交的更新數據. 相反, "可重復讀"在同一事務中多次
讀取數據時, 能夠保證所讀數據一樣, 也就是后續讀取不能讀到另一事務已提交的更新數據
幻讀?: 一個事務讀到另一個事務已提交的insert數據

?

轉載于:https://www.cnblogs.com/huangzhang/p/10732012.html

總結

以上是生活随笔為你收集整理的@Transcational特性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。