亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring中的@Transactional注解使用詳解

 更新時間:2024年01月30日 09:23:04   作者:小小懶懶  
這篇文章主要介紹了Spring中的@Transactional注解使用詳解,@Transactional 是一個注解,用于在 Spring 框架中管理事務(wù)的聲明式事務(wù)管理機制,它可以應(yīng)用于方法或類級別,并指示方法或類在執(zhí)行時應(yīng)該被包裝在一個事務(wù)中,需要的朋友可以參考下

@Transactional 注解介紹

@Transactional 是一個注解,用于在 Spring 框架中管理事務(wù)的聲明式事務(wù)管理機制。

它可以應(yīng)用于方法或類級別,并指示方法或類在執(zhí)行時應(yīng)該被包裝在一個事務(wù)中。

使用 @Transactional 注解的方法在執(zhí)行時會被 Spring 框架自動處理事務(wù)的起始、提交或回滾等操作,簡化了事務(wù)管理的編碼工作。

  • 當(dāng)方法執(zhí)行成功時,事務(wù)會被提交,數(shù)據(jù)的變更會持久化到數(shù)據(jù)庫;
  • 當(dāng)方法執(zhí)行失敗時,事務(wù)會被回滾,之前的數(shù)據(jù)變更會被撤銷。

@Transactional 注解的常見屬性和行為

  • propagation:指定事務(wù)的傳播行為。它定義了事務(wù)方法被另一個事務(wù)方法調(diào)用時,事務(wù)應(yīng)該如何傳播。常用的傳播行為包括 REQUIRED、REQUIRES_NEW、NESTED 等。
  • isolation:指定事務(wù)的隔離級別。它定義了事務(wù)方法在并發(fā)環(huán)境中處理數(shù)據(jù)一致性的程度,包括 DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE 等級別。
  • readOnly:指定事務(wù)是否為只讀。如果設(shè)置為 true,則表示事務(wù)只讀,不會對數(shù)據(jù)進(jìn)行修改。這樣可以提高數(shù)據(jù)庫的讀取性能。
  • timeout:指定事務(wù)的超時時間(以秒為單位)。如果事務(wù)執(zhí)行時間超過指定的超時時間,事務(wù)將被回滾。
  • rollbackFor 和 noRollbackFor:用于指定在遇到特定的異常時事務(wù)是否回滾??梢栽O(shè)置特定的異常類,或者使用異常類的父類或接口。
  • rollbackOn 和 noRollbackOn:與 rollbackFor 和 noRollbackFor 類似,用于指定在遇到特定的異常類型時事務(wù)是否回滾,但使用的是異常類的名字字符串。
  • value 和 transactionManager:用于指定事務(wù)管理器的名稱。如果應(yīng)用中存在多個事務(wù)管理器,可以通過這兩個屬性指定使用哪個事務(wù)管理器。

以下是一個示例代碼,展示了 @Transactional 注解的使用:

@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, readOnly = false)
public void saveOrder(Order order) {
    // 保存訂單的邏輯
    // ...
}
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
public void updateProductQuantity(String productId, int quantity) {
    // 更新產(chǎn)品庫存的邏輯
    // ...
}

在上述示例中,saveOrder 方法和 updateProductQuantity 方法都被 @Transactional 注解修飾,表示它們會在事務(wù)中執(zhí)行。

saveOrder 方法使用默認(rèn)的傳播行為和隔離級別,而 updateProductQuantity 方法指定了傳播行為為 REQUIRED,隔離級別為 READ_COMMITTED。

需要注意的是,@Transactional 注解只能應(yīng)用于公共方法。當(dāng)調(diào)用被注解的方法時,事務(wù)的生效是通過 Spring AOP 實現(xiàn)的,所以該注解需要在 Spring 管理的 Bean 中才能生效。

同時,建議將 @Transactional 注解應(yīng)用在業(yè)務(wù)層而非持久層,以便事務(wù)的粒度更加明確和控制。

總結(jié)

要知道@Transactional注解里面每個屬性的含義。@Transactional注解屬性就是來控制事務(wù)屬性的。通過這些屬性來生成事務(wù)。

要明確我們添加的@Transactional注解會不會起作用。

@Transactional注解在外部調(diào)用的函數(shù)上才有效果,內(nèi)部調(diào)用的函數(shù)添加無效,要切記。這是由AOP的特性決定的。

要明確事務(wù)的作用范圍,有@Transactional的函數(shù)調(diào)用有@Transactional的函數(shù)的時候,進(jìn)入第二個函數(shù)的時候是新的事務(wù),還是沿用之前的事務(wù)。稍不注意就會拋UnexpectedRollbackException異常。

到此這篇關(guān)于Spring中的@Transactional注解使用詳解的文章就介紹到這了,更多相關(guān)@Transactional注解使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • RestTemplat中關(guān)于getForobject方法的使用

    RestTemplat中關(guān)于getForobject方法的使用

    這篇文章主要介紹了RestTemplat中關(guān)于getForobject方法的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 深入理解JAVA抽象類和接口的比較與異同

    深入理解JAVA抽象類和接口的比較與異同

    這篇文章主要為大家詳細(xì)介紹了JAVA抽象類和接口的比較,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 深入理解java虛擬機的故障處理工具

    深入理解java虛擬機的故障處理工具

    大家都知道在給系統(tǒng)定位問題的時候,知識、經(jīng)驗是關(guān)鍵基礎(chǔ),數(shù)據(jù)是依據(jù),工具是運用知識處理數(shù)據(jù)的手段。Java開發(fā)人員可以在jdk安裝的bin目錄下找到除了java,javac以外的其他命令。這些命令主要是一些用于監(jiān)視虛擬機和故障處理的工具,下面來看看詳細(xì)的介紹。
    2016-11-11
  • Java設(shè)計模式詳解之門面模式(外觀模式)

    Java設(shè)計模式詳解之門面模式(外觀模式)

    為子系統(tǒng)中的一組接口提供一個一致的界面, Facade 模式定義了一個高層接口,這個接口使得這一子系統(tǒng)更加容易使用。本文給大家介紹Java設(shè)計模式詳解之門面模式(外觀模式),感興趣的朋友參考下吧
    2016-04-04
  • java實現(xiàn)簡單發(fā)送郵件功能

    java實現(xiàn)簡單發(fā)送郵件功能

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單發(fā)送郵件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Spring事務(wù)aftercommit原理及實踐

    Spring事務(wù)aftercommit原理及實踐

    這篇文章主要為大家介紹了Spring事務(wù)aftercommit原理及實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Maven工程pom中如何定義jdk版本

    Maven工程pom中如何定義jdk版本

    這篇文章主要介紹了Maven工程pom中如何定義jdk版本,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Calcite使用SQL實現(xiàn)查詢excel內(nèi)容

    Calcite使用SQL實現(xiàn)查詢excel內(nèi)容

    因為calcite本身沒有excel的適配器,?所以本文將模仿calcite-file,?搞一個calcite-file-excel實現(xiàn)查詢excel內(nèi)容,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01
  • javaCV開發(fā)詳解之收流器實現(xiàn)

    javaCV開發(fā)詳解之收流器實現(xiàn)

    這篇文章主要介紹了javaCV開發(fā)詳解之收流器實現(xiàn),對javaCV有研究的同學(xué),可以參考下
    2021-04-04
  • 使用Maven進(jìn)行版本管理的詳細(xì)步驟

    使用Maven進(jìn)行版本管理的詳細(xì)步驟

    aven提供了一套強大的版本管理機制,允許開發(fā)者管理項目的版本號,并在不同的版本之間進(jìn)行升級和降級,以下是如何使用Maven進(jìn)行版本管理的詳細(xì)步驟和代碼示例,感興趣的小伙伴跟著小編一起來看看吧
    2024-11-11

最新評論