<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文範例為大家分享了Spring基於註解設定事務的屬性,供大家參考,具體內容如下
在Spring中,事務屬性描述了事務策略如何應用到方法上,事務屬性包含5個方面:
① 傳播行為
② 隔離級別
③ 回滾策略
④ 超時時間
⑤ 是否唯讀
1、當事務方法被另一個事務方法呼叫時,必須指定事務應該如何傳播。例如,方法可能繼續在現有的事務中允許,也可能開啟一個新事務,並在自己的事務中執行。
2、事務的傳播行為可以由傳播屬性指定,Spring定義了7種型別的傳播行為。其中最常用的是REQUIRED
和REQUIRES_NEW
。
3、事務的傳播屬性可以在@Transactional註解的propagation屬性中定義。
4、舉個例子:
/** * 使用 @Transactional 指定事務方法 */ @Service("bookShopService") public class BookShopServiceImpl implements BookShopService { /** * 1. 新增事務註解@Transactional。 * 2. 使用 propagation 指定事務的傳播行為, * 即當前事務方法被另外一個事務方法呼叫時,如何使用事務: * 是使用呼叫方法的事務,還是開啟一個新事務(使用自己的事務)。 * 3. propagation: * ① 預設值是 Propagation.REQUIRED, 即使用呼叫方法的事務。 * ② 可以指定為 Propagation.REQUIRES_NEW, 即在呼叫方法的事務中開啟一個新事務(自己的事務)。 */ @Transactional(propagation = Propagation.REQUIRES_NEW) public void purchaseSigleBook(String acctName, String bookId) { ... } }
1、從理論上來說,事務應該彼此完全隔離,以避免並行事務所導致的問題。然而,那樣會對效能產生極大的影響,因為事務必須按順序執行。
2、在實際開發中,為了提升效能,事務會以較低的隔離級別執行。
3、事務的隔離級別可以通過隔離級別事務屬性(isolation
)指定。
4、Spring支援的事務隔離級別:
事務的隔離級別要得到底層資料庫引擎的支援,而不是應用程式或者框架的支援。
Oracle 支援的2種事務隔離級別:READ_COMMIT。
MySQL 支援4種事務隔離級別:READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ 和 SERIALIZABLE。
5、用@Transactional
註解宣告式的管理事務時可以在 @Transactional 的isolation
屬性中設定隔離級別。
6、舉個例子:
/** 1. 使用 @Transactional 指定事務方法 */ @Service("bookShopService") public class BookShopServiceImpl implements BookShopService { /** * 1. 新增事務註解@Transactional。 * 2. 使用isolation屬性指定事務的隔離級別,最常用的的取值是: Isolation.READ_COMMITTED。 */ @Transactional(isolation = Isolation.READ_COMMITTED) public void purchaseSigleBook(String acctName, String bookId) { ... } }
1、預設情況下只有未檢查異常( RuntimeException 和 Error 型別的異常)會導致事務回滾,而檢查異常不會。
2、事務回滾的規則可以通過 @Transactional
註解的 rollbackFor
和 noRollbackFor
屬性來定義,這兩個屬性被宣告為Class[] 型別的,因此可以為這兩個屬性指定多個異常類。
① rollbackFor:指定遇到哪些異常時必須進行回滾。
② noRollbackFor:指定遇到哪些異常時,必須不回滾。
3、舉個例子:
/** * 使用 @Transactional 指定事務方法 */ @Service("bookShopService") public class BookShopServiceImpl implements BookShopService { /** * 1. 新增事務註解@Transactional。 * 2. 使用rollbackFor 和 noRollbackFor指定事務遇到哪些異常時進行強制回滾或者強制不回滾。 * 預設情況下,Spring宣告事務對所有執行時異常進行回滾.通常取預設值。 */ @Transactional(noRollbackFor = {UserAccounException.class}) public void purchaseSigleBook(String acctName, String bookId) { ... } }
1、如果一個事務唯讀取資料但不修改資料,資料庫引擎可以對這個事務進行優化。
2、唯讀事務屬性:表示這個事務唯讀取資料但不更新數,這樣可以幫助資料庫進行優化事務。
3、唯讀屬性可以在@Transactional
註解中readOnly
屬性中定義,其取值只有true和false。
4、舉個例子:
/** * 使用 @Transactional 指定事務方法 */ @Service("bookShopService") public class BookShopServiceImpl implements BookShopService { /** * 1. 新增事務註解@Transactional。 * 2. 使用 readOnly 唯讀事務的唯讀屬性,表示這個事務是否唯讀取資料而不修改資料。 */ @Transactional(readOnly = true) public void purchaseSigleBook(String acctName, String bookId) { ... } }
1、由於事務可以在行和表上獲得鎖,因此長期執行的事務會佔用資源,並對整體效能產生影響。
2、超時事務屬性:事務在強制回滾之前可以保持多久,這樣可以防止長期執行的事務佔用資源。
3、超時屬性可以在 @Transactional註解中timeout屬性中定義,其單位為秒。
4、舉個例子:
/** * 使用 @Transactional 指定事務方法 */ @Service("bookShopService") public class BookShopServiceImpl implements BookShopService { /** * 1. 新增事務註解@Transactional。 * 2. 使用 timeout 指定事務的超時屬性,表示在強制回滾之前,這個事務能執行多久,單位是秒。 */ @Transactional(timeout = 3) public void purchaseSigleBook(String acctName, String bookId) { ... } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45