国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!

這篇具有很好參考價值的文章主要介紹了Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:
博主在最近的幾次面試中,大中小廠都問到了Spring的事務(wù)相關(guān)問題,這塊知識確實是面試中的重點內(nèi)容,因此結(jié)合所看的書籍,在這篇文章中總結(jié)下。該專欄比較適合剛?cè)肟覬ava的小白以及準(zhǔn)備秋招的大佬閱讀,感謝大佬的關(guān)注。

如果文章有什么需要改進的地方歡迎大佬提出,對大佬有幫助希望可以支持下哦~

小威在此先感謝各位小伙伴兒了??

Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!,秋招總結(jié)&小白入坑Java,spring,面試,事務(wù),dubbo,原力計劃

以下正文開始

Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!,秋招總結(jié)&小白入坑Java,spring,面試,事務(wù),dubbo,原力計劃


Spring事務(wù)包括聲明式事務(wù)管理和注解式事務(wù)管理,我們通過概念和小demo的形式一步一步地來一起學(xué)習(xí)這個知識點!

聲明式事務(wù)管理

首先簡單介紹下Spring的聲明式事務(wù)管理:

聲明式事務(wù)管理是指通過配置來實現(xiàn)事務(wù)管理,我們只需定義事務(wù)邊界和事務(wù)屬性,不需要顯式編寫事務(wù)管理的代碼。

那么我們?nèi)绾螌崿F(xiàn)呢?

首先配置事務(wù)管理器和數(shù)據(jù)源:通過配置 <bean> 元素,使用 TransactionManager 類型的 Bean 來提供事務(wù)管理器的實例,并使用 DataSource 類型的 Bean 來提供數(shù)據(jù)源。

接著定義事務(wù)邊界:使用 <tx:advice> 元素來定義事務(wù)邊界和事務(wù)屬性,指定哪些方法需要進行事務(wù)管理。

還需要配置事務(wù)通知:使用 <aop:config> 元素來啟用事務(wù)管理功能并將事務(wù)通知應(yīng)用到指定的切入點上。

理論知識先講到這里,儲備這些知識可以和面試官進行交流~

Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!,秋招總結(jié)&amp;小白入坑Java,spring,面試,事務(wù),dubbo,原力計劃

注解式管理事務(wù)

除了上面提到的聲明式管理之外,Spring提供了一種更加簡單且強大的方式來管理事務(wù),通過使用注解式事務(wù),可以在方法級別上進行聲明和配置事務(wù)的行為。這塊面試官問的更多,我們來詳細介紹下:

@Transactional注解(核心注解): @Transactional是Spring中最常用的注解之一,用于標(biāo)識需要進行事務(wù)管理的方法或類。它可以應(yīng)用在方法上或類上,而且還可以配置這些屬性:

  1. value:指定事務(wù)管理器的名稱(如果有多個事務(wù)管理器)。
  2. propagation:指定事務(wù)傳播行為,默認值為REQUIRED。
  3. isolation:指定事務(wù)隔離級別,默認值為DEFAULT
  4. readOnly:指定事務(wù)是否為只讀事務(wù),默認值為false。
  5. timeout:指定事務(wù)超時時間,默認值為-1,表示不設(shè)置超時。

Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!,秋招總結(jié)&amp;小白入坑Java,spring,面試,事務(wù),dubbo,原力計劃

事務(wù)傳播行為

上面介紹了Spring實現(xiàn)事務(wù)的兩種方式,接下來介紹下另一個重量級的知識點–》事務(wù)傳播行為。

事務(wù)傳播行為定義了當(dāng)一個事務(wù)方法調(diào)用另一個事務(wù)方法時,如何處理事務(wù)的范圍。Spring提供了多種傳播行為選項,包括:

  1. REQUIRED:如果當(dāng)前沒有事務(wù),則創(chuàng)建一個新的事務(wù);如果已存在事務(wù),則加入到當(dāng)前事務(wù)中。
  2. REQUIRES_NEW:每次都會創(chuàng)建一個新的事務(wù),如果已存在事務(wù)則將其掛起。
  3. SUPPORTS:如果當(dāng)前存在事務(wù),則加入到當(dāng)前事務(wù)中;如果沒有事務(wù),則以非事務(wù)方式執(zhí)行。
  4. NOT_SUPPORTED:以非事務(wù)方式執(zhí)行方法,如果當(dāng)前存在事務(wù)則將其掛起。
  5. NEVER:以非事務(wù)方式執(zhí)行方法,如果當(dāng)前存在事務(wù)則拋出異常。
  6. MANDATORY:如果當(dāng)前存在事務(wù),則加入到當(dāng)前事務(wù)中;如果沒有事務(wù),則拋出異常。
  7. NESTED:如果當(dāng)前存在事務(wù),則將該事務(wù)嵌套到當(dāng)前事務(wù)中作為一個保存點,可以回滾到該保存點。

Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!,秋招總結(jié)&amp;小白入坑Java,spring,面試,事務(wù),dubbo,原力計劃

事務(wù)隔離級別

接下來介紹下 spring的事務(wù)隔離級別,這一塊也是面試官經(jīng)常問到的一點。它與數(shù)據(jù)庫的事務(wù)隔離級別有著異曲同工之妙。

事務(wù)隔離級別定義了多個事務(wù)同時運行時彼此之間的可見性和影響范圍。Spring支持以下事務(wù)隔離級別:

  • DEFAULT:使用數(shù)據(jù)庫默認的事務(wù)隔離級別。
  • READ_UNCOMMITTED:最低級別的隔離級別,允許讀取未提交的數(shù)據(jù)。
  • READ_COMMITTED:允許讀取已提交的數(shù)據(jù)。
  • REPEATABLE_READ:對同一數(shù)據(jù)的多次讀取結(jié)果保持一致,避免臟讀和不可重復(fù)讀。
  • SERIALIZABLE:最高級別的隔離級別,確保事務(wù)串行執(zhí)行,避免任何并發(fā)問題。
  • 只讀事務(wù)(readOnly): 如果一個事務(wù)中的方法僅執(zhí)行讀操作而不進行寫操作時,可以將事務(wù)標(biāo)記為只讀事務(wù)。這樣做可以提高性能,因為只讀事務(wù)不需要對數(shù)據(jù)進行鎖定。

Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!,秋招總結(jié)&amp;小白入坑Java,spring,面試,事務(wù),dubbo,原力計劃

學(xué)生管理系統(tǒng)demo

如果上面的概念看著有點懵,那么接下來讓我們通過一個學(xué)生管理系統(tǒng)的demo來詳細介紹 Spring 的聲明式事務(wù)和基于注解的事務(wù)管理。

我從項目中扒出來部分偽代碼,現(xiàn)在我們有一個簡單的學(xué)生管理系統(tǒng),其中包含兩個服務(wù)方法:addStudent()updateStudent()。addStudent() 方法用于添加學(xué)生信息,updateStudent() 方法用于更新學(xué)生信息。

使用聲明式事務(wù)管理demo

前面概念部分提到過,在聲明式事務(wù)管理中,我們可以使用 XML 配置來定義事務(wù)邊界和事務(wù)特性。

首先,我們需要配置事務(wù)管理器和數(shù)據(jù)源。在 Spring 配置文件中,我們可以使用 TransactionManager 元素和 DataSource 元素來配置相應(yīng)的 Bean。

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <!-- 數(shù)據(jù)源配置 -->
</bean>

接下來,定義事務(wù)邊界,我們可以在服務(wù)類中使用 :


<bean id="studentService" class="com.test.StudentService">
    <!-- 依賴注入 -->
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="add*" propagation="REQUIRED" />
        <tx:method name="update*" propagation="REQUIRED" />
    </tx:attributes>
</tx:advice>

<aop:config>
    <aop:pointcut id="studentServicePointcut" expression="execution(* com.example.StudentService.*(..))" />
    <aop:advisor advice-ref="txAdvice" pointcut-ref="studentServicePointcut" />
</aop:config>

在上面的代碼中,我們使用了 <tx:advice> 元素來配置事務(wù)邊界。通過 <tx:method> 元素,我們可以指定需要進行事務(wù)管理的方法并定義事務(wù)傳播行為。

最后,在 Spring 配置文件中,我們需要啟用事務(wù)管理功能并配置事務(wù)通知。

<tx:annotation-driven transaction-manager="transactionManager" />

我們配置了以上代碼,因此Spring 會自動掃描帶有 @Transactional 注解的方法,并生成事務(wù)通知。

使用注解的事務(wù)管理demo

首先第一步也是配置事務(wù)管理器和數(shù)據(jù)源,這一步與聲明式事務(wù)管理相同,因此不在贅述。

接著定義事務(wù)邊界,這點與聲明式事務(wù)管理相比,基于注解的事務(wù)管理不再需要在 Spring 配置文件中進行額外的配置。我們只需在服務(wù)類中使用 @Transactional 注解即可。

@Service
public class StudentService {
    // ...

    @Transactional
    public void addStudent(Student student) {
        // 添加學(xué)生信息,管理系統(tǒng)偽代碼省略
    }

    @Transactional
    public void updateStudent(Student student) {
        // 更新學(xué)生信息,管理系統(tǒng)偽代碼省略
    }

    // ...
}

通過添加 @Transactional 注解到服務(wù)類中的方法上,我們直接就實現(xiàn)了對 addStudent() 和 updateStudent() 方法的事務(wù)管理。

同時,我們也可以將 @Transactional 注解應(yīng)用到接口定義或抽象類的方法上,以便在子類中繼承和覆蓋時繼續(xù)享受事務(wù)管理功能。

面試這樣答

聲明式事務(wù)管理和基于注解的事務(wù)管理是 Spring 提供的兩種常用事務(wù)管理方式。它們都能夠簡化事務(wù)管理的配置和編寫,并提供了靈活的事務(wù)特性。

在聲明式事務(wù)管理中,我們使用 XML 配置或注解來定義事務(wù)邊界和事務(wù)通知。通過使用 <tx:advice> 元素和 <tx:method> 元素,我們可以指定需要進行事務(wù)管理的方法并定義事務(wù)傳播行為。

而基于注解的事務(wù)管理更加簡潔,只需在服務(wù)類的方法上添加 @Transactional 注解即可實現(xiàn)事務(wù)管理。

無論是哪種方式,Spring 的事務(wù)管理機制都使得我們能夠輕松實現(xiàn)數(shù)據(jù)的一致性和完整性。通過合理配置事務(wù)特性,我們可以滿足不同業(yè)務(wù)場景下的事務(wù)需求。

文章到這里就先結(jié)束了,感興趣的可以訂閱專欄哈,后續(xù)會繼續(xù)分享相關(guān)的知識點。

Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!,秋招總結(jié)&amp;小白入坑Java,spring,面試,事務(wù),dubbo,原力計劃文章來源地址http://www.zghlxwxcb.cn/news/detail-583620.html

到了這里,關(guān)于Spring的兩種事務(wù)管理機制,面試這樣答當(dāng)場入職!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • PostgreSQL 的事務(wù)管理和并發(fā)控制機制解析

    PostgreSQL 的事務(wù)管理和并發(fā)控制機制解析

    ???? 博主 libin9iOak帶您 Go to New World.??? ?? 個人主頁——libin9iOak的博客?? ?? 《面試題大全》 文章圖文并茂??生動形象??簡單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍》學(xué)會IDEA常用操作,工作效率翻倍~?? ???? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬

    2024年02月15日
    瀏覽(28)
  • MyBatis第十一講:MyBatis事務(wù)管理機制詳解

    本文是MyBatis第十一講,主要介紹MyBatis事務(wù)管理相關(guān)的使用和機制。

    2024年02月16日
    瀏覽(27)
  • Spring 事務(wù)管理方案和事務(wù)管理器及事務(wù)控制的API

    Spring 事務(wù)管理方案和事務(wù)管理器及事務(wù)控制的API

    目錄 一、事務(wù)管理方案 1. 修改業(yè)務(wù)層代碼 2. 測試 二、事務(wù)管理器 1. 簡介 2. 在配置文件中引入約束 3. 進行事務(wù)配置 三、事務(wù)控制的API 1.?PlatformTransactionManager接口 2.?TransactionDefinition接口 3.?TransactionStatus接口 往期專欄文章相關(guān)導(dǎo)讀? 1. Maven系列專欄文章 2. Mybatis系列專欄文

    2024年02月08日
    瀏覽(27)
  • 【Spring】Spring的事務(wù)管理

    【Spring】Spring的事務(wù)管理

    Spring的事務(wù)管理簡化了傳統(tǒng)的事務(wù)管理流程,并且在一定程度上減少了開發(fā)者的工作量。 1.1 事務(wù)管理的核心接口 在Spring的所有JAR包中包含一個名為Spring-tx-4.3.6.RELEASE的JAR包,該包就是Spring提供的用于事務(wù)管理的依賴包。在該JAR包的org.Springframework.transaction包中有3個接口文件:

    2024年02月03日
    瀏覽(23)
  • Spring之事務(wù)管理

    Spring之事務(wù)管理

    事務(wù)是數(shù)據(jù)庫操作最基本單位,要么都成功,要么都失敗。 原子性 一致性 隔離性 持久性。 Spring定義了7種傳播行為: 傳播屬性 描述 REQUIRED 如果有事務(wù)在運行,當(dāng)前的方法就在這個事務(wù)內(nèi)運行,否則,就啟動一個新的事務(wù),并在自己的事務(wù)內(nèi)運行 REQUIRED_NEW 當(dāng)前的方法必須

    2024年02月13日
    瀏覽(34)
  • Spring 事務(wù)管理

    Spring 事務(wù)管理

    目錄 1. 事務(wù)管理 1.1. Spring框架的事務(wù)支持模型的優(yōu)勢 1.1.1. 全局事務(wù) 1.1.2. 本地事務(wù) 1.1.3. Spring框架的一致化編程模型 1.2. 了解Spring框架的事務(wù)抽象(Transaction Abstraction) 1.2.1. Hibernate 事務(wù)設(shè)置 1.3. 用事務(wù)同步資源 1.3.1. 高級同步方式 1.3.2. 低級同步方式 1.3.3.TransactionAwareDataSo

    2024年02月13日
    瀏覽(31)
  • Spring的事務(wù)管理

    1、事務(wù)的回顧 【1】事務(wù)的定義 是數(shù)據(jù)庫操作的最小工作單元,是作為單個邏輯工作單元執(zhí)行的一系列操作,這些操作作為一個整體一起向系統(tǒng)提交,要么都執(zhí)行、要么都不執(zhí)行;事務(wù)是一組不可再分割的操作集合 【2】事務(wù)的ACID原則 事務(wù)具有4個基本特性:原子性、一致性

    2023年04月16日
    瀏覽(36)
  • Spring使用@Transactional 管理事務(wù),Java事務(wù)詳解。

    B站視頻:https://www.bilibili.com/video/BV1eV411u7cg 技術(shù)文檔:https://d9bp4nr5ye.feishu.cn/wiki/HX50wdHFyiFoLrkfEAAcTBdinvh 簡單來說事務(wù)就是一組對數(shù)據(jù)庫的操作 要么都成功,要么都失敗。 事務(wù)要保證可靠性,必須具備四個特性:ACID。 A:原子性:事務(wù)是一個原子操作單元,要么完全執(zhí)行,要么

    2024年02月11日
    瀏覽(19)
  • Spring中的事務(wù)管理

    概念 事務(wù) 是一組操作的集合,它是一個不可分割的工作單位,這些操作要么 同時成功 ,要么 同時失敗 。 操作 開啟事務(wù)(一組操作 開始前 ,開啟事務(wù)) : start transaction / begin ; 提交事務(wù)(這組操作 全部成功后 ,提交事務(wù)) : commit ; 回滾事務(wù)(中間任何一個操作 出現(xiàn)異常 ,

    2024年02月12日
    瀏覽(21)
  • 【Spring教程21】Spring框架實戰(zhàn):Spring事務(wù)簡介、AOP事務(wù)管理、代碼示例全面詳解

    【Spring教程21】Spring框架實戰(zhàn):Spring事務(wù)簡介、AOP事務(wù)管理、代碼示例全面詳解

    歡迎大家回到《Java教程之Spring30天快速入門》,本教程所有示例均基于Maven實現(xiàn),如果您對Maven還很陌生,請移步本人的博文《如何在windows11下安裝Maven并配置以及 IDEA配置Maven環(huán)境》,本文的上一篇為《AOP(面對切面編程)知識總結(jié)》 事務(wù)作用:在數(shù)據(jù)層保障一系列的數(shù)據(jù)庫

    2024年02月04日
    瀏覽(53)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包