最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring基于注解配置事務(wù)的屬性

 更新時間:2022年08月26日 11:43:00   作者:halftwo  
這篇文章主要為大家詳細(xì)介紹了Spring基于注解配置事務(wù)的屬性,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Spring基于注解配置事務(wù)的屬性,供大家參考,具體內(nèi)容如下

一、事務(wù)屬性概述

在Spring中,事務(wù)屬性描述了事務(wù)策略如何應(yīng)用到方法上,事務(wù)屬性包含5個方面:

① 傳播行為
② 隔離級別
③ 回滾策略
④ 超時時間
⑤ 是否只讀

二、事務(wù)的傳播行為屬性##

1、當(dāng)事務(wù)方法被另一個事務(wù)方法調(diào)用時,必須指定事務(wù)應(yīng)該如何傳播。例如,方法可能繼續(xù)在現(xiàn)有的事務(wù)中允許,也可能開啟一個新事務(wù),并在自己的事務(wù)中運行。
2、事務(wù)的傳播行為可以由傳播屬性指定,Spring定義了7種類型的傳播行為。其中最常用的是REQUIREDREQUIRES_NEW。

3、事務(wù)的傳播屬性可以在@Transactional注解的propagation屬性中定義。

4、舉個例子:

/**
?* 使用 @Transactional 指定事務(wù)方法
?*/
@Service("bookShopService")
public class BookShopServiceImpl implements BookShopService
{
?? ?/**
?? ? * 1. 添加事務(wù)注解@Transactional。
?? ? * 2. 使用 propagation 指定事務(wù)的傳播行為,
?? ? * 即當(dāng)前事務(wù)方法被另外一個事務(wù)方法調(diào)用時,如何使用事務(wù):?
?? ? * 是使用調(diào)用方法的事務(wù),還是開啟一個新事務(wù)(使用自己的事務(wù))。
?? ? * 3. propagation:
?? ? * ?① 默認(rèn)值是 Propagation.REQUIRED, 即使用調(diào)用方法的事務(wù)。
?? ? * ?② 可以指定為 Propagation.REQUIRES_NEW, 即在調(diào)用方法的事務(wù)中開啟一個新事務(wù)(自己的事務(wù))。
?? ? */
? ? @Transactional(propagation = Propagation.REQUIRES_NEW)
? ? public void purchaseSigleBook(String acctName, String bookId)
? ? {
? ? ? ? ...
? ? }
}

三、事務(wù)的隔離級別##

1、從理論上來說,事務(wù)應(yīng)該彼此完全隔離,以避免并發(fā)事務(wù)所導(dǎo)致的問題。然而,那樣會對性能產(chǎn)生極大的影響,因為事務(wù)必須按順序運行。
2、在實際開發(fā)中,為了提升性能,事務(wù)會以較低的隔離級別運行。
3、事務(wù)的隔離級別可以通過隔離級別事務(wù)屬性(isolation)指定。
4、Spring支持的事務(wù)隔離級別:

事務(wù)的隔離級別要得到底層數(shù)據(jù)庫引擎的支持,而不是應(yīng)用程序或者框架的支持。
Oracle 支持的2種事務(wù)隔離級別:READ_COMMIT。
MySQL 支持4種事務(wù)隔離級別:READ-UNCOMMITTED、READ-COMMITTED、REPEATABLE-READ 和 SERIALIZABLE。

5、用@Transactional注解聲明式的管理事務(wù)時可以在 @Transactional 的isolation屬性中設(shè)置隔離級別。

6、舉個例子:

/**
?1. 使用 @Transactional 指定事務(wù)方法
?*/
@Service("bookShopService")
public class BookShopServiceImpl implements BookShopService
{
?? ?/**
?? ? * 1. 添加事務(wù)注解@Transactional。
?? ? * 2. 使用isolation屬性指定事務(wù)的隔離級別,最常用的的取值是: Isolation.READ_COMMITTED。
?? ? */
? ? @Transactional(isolation = Isolation.READ_COMMITTED)
? ? public void purchaseSigleBook(String acctName, String bookId)
? ? {
? ? ? ? ...
? ? }
}

四、事務(wù)的回滾屬性##

1、默認(rèn)情況下只有未檢查異常( RuntimeException 和 Error 類型的異常)會導(dǎo)致事務(wù)回滾,而檢查異常不會。
2、事務(wù)回滾的規(guī)則可以通過 @Transactional注解的 rollbackFornoRollbackFor屬性來定義,這兩個屬性被聲明為Class[] 類型的,因此可以為這兩個屬性指定多個異常類。
① rollbackFor:指定遇到哪些異常時必須進(jìn)行回滾。
② noRollbackFor:指定遇到哪些異常時,必須不回滾。

3、舉個例子:

/**
?* 使用 @Transactional 指定事務(wù)方法
?*/
@Service("bookShopService")
public class BookShopServiceImpl implements BookShopService
{
?? ?/**
?? ? * 1. 添加事務(wù)注解@Transactional。
?? ? * 2. 使用rollbackFor 和 noRollbackFor指定事務(wù)遇到哪些異常時進(jìn)行強(qiáng)制回滾或者強(qiáng)制不回滾。
?? ? * 默認(rèn)情況下,Spring聲明事務(wù)對所有運行時異常進(jìn)行回滾.通常取默認(rèn)值。
?? ? */
? ? @Transactional(noRollbackFor = {UserAccounException.class})
? ? public void purchaseSigleBook(String acctName, String bookId)
? ? {
? ? ? ? ...
? ? }
}

五、事務(wù)的只讀屬性##

1、如果一個事務(wù)只讀取數(shù)據(jù)但不修改數(shù)據(jù),數(shù)據(jù)庫引擎可以對這個事務(wù)進(jìn)行優(yōu)化。
2、只讀事務(wù)屬性:表示這個事務(wù)只讀取數(shù)據(jù)但不更新數(shù),這樣可以幫助數(shù)據(jù)庫進(jìn)行優(yōu)化事務(wù)。
3、只讀屬性可以在@Transactional注解中readOnly屬性中定義,其取值只有true和false。
4、舉個例子:

/**
?* 使用 @Transactional 指定事務(wù)方法
?*/
@Service("bookShopService")
public class BookShopServiceImpl implements BookShopService
{
?? ?/**
?? ? * 1. 添加事務(wù)注解@Transactional。
?? ? * 2. 使用 readOnly 只讀事務(wù)的只讀屬性,表示這個事務(wù)是否只讀取數(shù)據(jù)而不修改數(shù)據(jù)。
?? ? */
? ? @Transactional(readOnly = true)
? ? public void purchaseSigleBook(String acctName, String bookId)
? ? {
? ? ? ? ...
? ? }
}

##六、事務(wù)的超時屬性##

1、由于事務(wù)可以在行和表上獲得鎖,因此長期運行的事務(wù)會占用資源,并對整體性能產(chǎn)生影響。
2、超時事務(wù)屬性:事務(wù)在強(qiáng)制回滾之前可以保持多久,這樣可以防止長期運行的事務(wù)占用資源。
3、超時屬性可以在 @Transactional注解中timeout屬性中定義,其單位為秒。
4、舉個例子:

/**
?* 使用 @Transactional 指定事務(wù)方法
?*/
@Service("bookShopService")
public class BookShopServiceImpl implements BookShopService
{
?? ?/**
?? ? * 1. 添加事務(wù)注解@Transactional。
?? ? * 2. 使用 timeout 指定事務(wù)的超時屬性,表示在強(qiáng)制回滾之前,這個事務(wù)能運行多久,單位是秒。
?? ? */
? ? @Transactional(timeout = 3)
? ? public void purchaseSigleBook(String acctName, String bookId)
? ? {
? ? ? ? ...
? ? }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java實現(xiàn)酒店客房管理系統(tǒng)

    Java實現(xiàn)酒店客房管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)酒店客房管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • SpringBoot項目中java -jar xxx.jar沒有主清單屬性的解決方法

    SpringBoot項目中java -jar xxx.jar沒有主清單屬性的解決方法

    這篇文章主要給大家介紹了SpringBoot項目中java -jar xxx.jar沒有主清單的解決方法,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • java8新特性之接口的static和default的使用

    java8新特性之接口的static和default的使用

    這篇文章主要介紹了java8新特性之接口的static和default的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 使用maven創(chuàng)建普通項目命令行程序詳解

    使用maven創(chuàng)建普通項目命令行程序詳解

    大部分使用maven創(chuàng)建的是web項目,這里使用maven創(chuàng)建一個命令行程序,目的是讓大家了解maven特點和使用方式,有需要的朋友可以借鑒參考下
    2021-10-10
  • Mybatis使用Collection屬性的示例代碼

    Mybatis使用Collection屬性的示例代碼

    本文主要介紹了Mybatis使用Collection屬性的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 詳解java設(shè)計模式之六大原則

    詳解java設(shè)計模式之六大原則

    這篇文章主要介紹了java設(shè)計模式之六大原則,對設(shè)計模式感興趣的同學(xué),可以參考下
    2021-05-05
  • Maven引入與打包指定目錄下的第三方sdk的幾種方法

    Maven引入與打包指定目錄下的第三方sdk的幾種方法

    本文主要介紹了Maven引入與打包指定目錄下的第三方sdk的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • 如果你想寫自己的Benchmark框架(推薦)

    如果你想寫自己的Benchmark框架(推薦)

    這篇文章主要介紹了如果你想寫自己的Benchmark框架,本文通過給大家分享八條軍規(guī),幫助大家理解,需要的朋友可以參考下
    2020-07-07
  • 利用Java手寫一個簡易的lombok的示例代碼

    利用Java手寫一個簡易的lombok的示例代碼

    Lombok是一款Java開發(fā)插件,使得Java開發(fā)者可以通過其定義的一系列注解來消除業(yè)務(wù)工程中冗長和繁瑣的代碼,尤其對于簡單的Java模型對象。本文就來手寫一個簡易的lombok,需要的可以參考一下
    2022-10-10
  • 解決springboot?druid數(shù)據(jù)庫連接池連接失敗后一直重連問題

    解決springboot?druid數(shù)據(jù)庫連接池連接失敗后一直重連問題

    這篇文章主要介紹了解決springboot?druid數(shù)據(jù)庫連接池連接失敗后一直重連問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評論

托克逊县| 容城县| 宜兰县| 涿鹿县| 滕州市| 县级市| 嘉峪关市| 广西| 阿鲁科尔沁旗| 公主岭市| 陈巴尔虎旗| 南宁市| 平度市| 章丘市| 衡阳市| 武威市| 来凤县| 泽普县| 屏南县| 左权县| 胶州市| 凤阳县| 黄平县| 平潭县| 洪江市| 武川县| 白银市| 左云县| 山西省| 南汇区| 西畴县| 河南省| 蒙城县| 腾冲县| 灵川县| 女性| 团风县| 九江县| 玉田县| 平泉县| 甘谷县|