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

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

這篇具有很好參考價(jià)值的文章主要介紹了Spring 事務(wù)管理方案和事務(wù)管理器及事務(wù)控制的API。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

一、事務(wù)管理方案

1. 修改業(yè)務(wù)層代碼

2. 測(cè)試

二、事務(wù)管理器

1. 簡(jiǎn)介

2. 在配置文件中引入約束

3. 進(jìn)行事務(wù)配置

三、事務(wù)控制的API

1.?PlatformTransactionManager接口

2.?TransactionDefinition接口

3.?TransactionStatus接口

往期專欄&文章相關(guān)導(dǎo)讀?

1. Maven系列專欄文章

2. Mybatis系列專欄文章

3. Spring系列專欄文章?

?


一、事務(wù)管理方案

????????聲明式事務(wù)底層采用AOP技術(shù),在service層手動(dòng)添加事務(wù)就可以解決上一篇提到的問題。

1. 修改業(yè)務(wù)層代碼

????????添加一個(gè)SqlSessionTemplate對(duì)象,讓我們對(duì)業(yè)務(wù)方法進(jìn)行try catch,沒有異常則進(jìn)行提交,捕捉到異?;貪L即可。

package com.example.service;

import com.example.dao.AccountDao;
import com.example.pojo.Account;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
public class AccountService {
    @Autowired
    private AccountDao accountDao;

    @Autowired
    private SqlSessionTemplate sessionTemplate;

    /**
     *
     * @param id1 轉(zhuǎn)出人id
     * @param id2 轉(zhuǎn)入人id
     * @param price 金額
     */
    // 作用方法上時(shí),該方法都將具有該類型事務(wù)的事務(wù)屬性
    public void transfer(int id1,int id2, double price){

        try {
            // 轉(zhuǎn)出人減少余額
            Account account1 = accountDao.findById(id1);
            account1.setBalance(account1.getBalance() - price);
            accountDao.update(account1);

            // 模擬程序出錯(cuò)
            int i = 1 / 0;

            // 轉(zhuǎn)入人增加余額
            Account account2 = accountDao.findById(id2);
            account2.setBalance(account2.getBalance() + price);
            accountDao.update(account2);
            sessionTemplate.commit();
        }
        catch (Exception e){
            e.printStackTrace();
            sessionTemplate.rollback();
        }
    }
}

2. 測(cè)試

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

?OK,可以看到這里程序是出現(xiàn)異常中斷了的。?現(xiàn)在觀看數(shù)據(jù)庫(kù)里面的情況是怎么樣的。?

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

????????OK,可以看到這里張三確實(shí)沒有被扣錢啊,所以手動(dòng)提交事務(wù)也是可以的,但是這樣我們的try catch就太多了。因此有了事務(wù)管理器。

二、事務(wù)管理器

1. 簡(jiǎn)介

????????Spring依賴事務(wù)管理器進(jìn)行事務(wù)管理,事務(wù)管理器即一個(gè)通知類,我們?yōu)樵撏ㄖ愒O(shè)置切點(diǎn)為service層方法即可完成事務(wù)自動(dòng)管理。由于不同技術(shù)操作數(shù)據(jù)庫(kù),進(jìn)行事務(wù)操作的方法不同。如:JDBC提交事務(wù)是 connection.commit() ,MyBatis提交事務(wù)是 sqlSession.commit() ,所以Spring提供了多個(gè)事務(wù)管理器。

事務(wù)管理器名稱 作用
org.springframework.jdbc.datasource.DataSourceTransactionManager 針對(duì)JDBC技術(shù)提供的事務(wù)管理器。適用于JDBC和MyBatis。
org.springframework.orm.hibernate3.HibernateTransactionManager 針對(duì)于Hibernate框架提供的事務(wù)管理器。適用于Hibernate框架。
org.springframework.orm.jpa.JpaTransactionManager 針對(duì)于JPA技術(shù)提供的事務(wù)管理器。適用于JPA技術(shù)。
org.springframework.transaction.jta.JtaTransactionManager 跨越了多個(gè)事務(wù)管理源。適用在兩個(gè)或者是多個(gè)不同的數(shù)據(jù)源中實(shí)現(xiàn)事務(wù)控制。

????????我們使用MyBatis操作數(shù)據(jù)庫(kù),接下來使用 DataSourceTransactionManager 進(jìn)行事務(wù)管理。

2. 在配置文件中引入約束

xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd

3. 進(jìn)行事務(wù)配置

在applicationContext.xml文件新增配置

    <!-- 事務(wù)管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 進(jìn)行事務(wù)相關(guān)配置 -->
    <tx:advice id = "txAdvice">
        <tx:attributes>
            <!-- 代表所有方法 -->
            <tx:method name="*" />
        </tx:attributes>
    </tx:advice>

    <!-- 配置切面 -->
    <aop:config>
        <!-- 配置切點(diǎn) -->
        <aop:pointcut id="pointcut" expression="execution(* com.example.service..*(..))"/>
        <!-- 配置通知 -->
        <aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut"/>
    </aop:config>

三、事務(wù)控制的API

? ? ? ? 事務(wù)管理器都實(shí)現(xiàn)了PlatformTransactionManager接口,Spring進(jìn)行事務(wù)控制的功能是由三個(gè)接口提供的,這三個(gè)接口是Spring實(shí)現(xiàn)的,在開發(fā)中我們很少使用到,只需要了解他們的作用即可:

1.?PlatformTransactionManager接口

PlatformTransactionManager是Spring提供的事務(wù)管理器接口,所有事務(wù)管理器都實(shí)現(xiàn)了該接口。該接口中提供了三個(gè)事務(wù)操作方法:

  1. TransactionStatus getTransaction(TransactionDefinition definition):獲取事務(wù)狀態(tài)信息。
  2. void commit(TransactionStatus status):事務(wù)提交
  3. void rollback(TransactionStatus status):事務(wù)回滾

2.?TransactionDefinition接口

TransactionDefinition是事務(wù)的定義信息對(duì)象,它有如下方法:

  1. String getName():獲取事務(wù)對(duì)象名稱。
  2. int getIsolationLevel():獲取事務(wù)的隔離級(jí)別。
  3. int getPropagationBehavior():獲取事務(wù)的傳播行為。
  4. int getTimeout():獲取事務(wù)的超時(shí)時(shí)間。
  5. boolean isReadOnly():獲取事務(wù)是否只讀。

3.?TransactionStatus接口

TransactionStatus是事務(wù)的狀態(tài)接口,它描述了某一時(shí)間點(diǎn)上事務(wù)的狀態(tài)信息。它有如下方法:

  1. void flush() ?刷新事務(wù)
  2. boolean hasSavepoint() 獲取是否存在保存點(diǎn)
  3. boolean isCompleted() 獲取事務(wù)是否完成
  4. boolean isNewTransaction() 獲取是否是新事務(wù)
  5. boolean isRollbackOnly() 獲取是否回滾
  6. void setRollbackOnly() ?設(shè)置事務(wù)回滾

往期專欄&文章相關(guān)導(dǎo)讀?

?????大家如果對(duì)于本期內(nèi)容有什么不了解的話也可以去看看往期的內(nèi)容,下面列出了博主往期精心制作的Maven,Mybatis等專欄系列文章,走過路過不要錯(cuò)過哎!如果對(duì)您有所幫助的話就點(diǎn)點(diǎn)贊,收藏一下啪。其中Spring專欄有些正在更,所以無法查看,但是當(dāng)博主全部更完之后就可以看啦。文章來源地址http://www.zghlxwxcb.cn/news/detail-478693.html

1. Maven系列專欄文章

Maven系列專欄 Maven工程開發(fā)
Maven聚合開發(fā)【實(shí)例詳解---5555字】

2. Mybatis系列專欄文章

Mybatis系列專欄 MyBatis入門配置
Mybatis入門案例【超詳細(xì)】
MyBatis配置文件 —— 相關(guān)標(biāo)簽詳解
Mybatis模糊查詢——三種定義參數(shù)方法和聚合查詢、主鍵回填
Mybatis動(dòng)態(tài)SQL查詢 --(附實(shí)戰(zhàn)案例--8888個(gè)字--88質(zhì)量分)
Mybatis分頁(yè)查詢——四種傳參方式
Mybatis一級(jí)緩存和二級(jí)緩存(帶測(cè)試方法)
Mybatis分解式查詢
Mybatis關(guān)聯(lián)查詢【附實(shí)戰(zhàn)案例】
MyBatis注解開發(fā)---實(shí)現(xiàn)增刪查改和動(dòng)態(tài)SQL
MyBatis注解開發(fā)---實(shí)現(xiàn)自定義映射關(guān)系和關(guān)聯(lián)查詢

3. Spring系列專欄文章?

Spring系列專欄 Spring IOC 入門簡(jiǎn)介【自定義容器實(shí)例】
IOC使用Spring實(shí)現(xiàn)附實(shí)例詳解
Spring IOC之對(duì)象的創(chuàng)建方式、策略及銷毀時(shí)機(jī)和生命周期且獲取方式
Spring DI簡(jiǎn)介及依賴注入方式和依賴注入類型
Spring IOC相關(guān)注解運(yùn)用——上篇
Spring IOC相關(guān)注解運(yùn)用——下篇
Spring AOP簡(jiǎn)介及相關(guān)案例
注解、原生Spring、SchemaBased三種方式實(shí)現(xiàn)AOP【附詳細(xì)案例】
Spring事務(wù)簡(jiǎn)介及相關(guān)案例
Spring 事務(wù)管理方案和事務(wù)管理器及事務(wù)控制的API
Spring 事務(wù)的相關(guān)配置、傳播行為、隔離級(jí)別及注解配置聲明式事務(wù)

到了這里,關(guān)于Spring 事務(wù)管理方案和事務(wù)管理器及事務(wù)控制的API的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Spring的事務(wù)管理

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

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

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

    2024年02月11日
    瀏覽(18)
  • 【掌握Spring事務(wù)管理】深入理解事務(wù)傳播機(jī)制的秘密

    【掌握Spring事務(wù)管理】深入理解事務(wù)傳播機(jī)制的秘密

    ?????? 點(diǎn)進(jìn)來你就是我的人了 博主主頁(yè): ?????? 戳一戳,歡迎大佬指點(diǎn)! 歡迎志同道合的朋友一起加油喔 ?????? 目錄 1.Spring 中事務(wù)的實(shí)現(xiàn)方式 1.1 Spring 編程式事務(wù) (了解) 1.2 Spring 聲明式事務(wù) ( @Transactional ) 【異常情況一】(自動(dòng)回滾成功) 【異常情況二】(自動(dòng)回滾失效

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

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

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

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

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

    2024年02月04日
    瀏覽(53)
  • 【Spring篇】AOP事務(wù)管理

    【Spring篇】AOP事務(wù)管理

    ??系列專欄:Spring系列專欄 ??個(gè)人主頁(yè):個(gè)人主頁(yè) 1.Spring事務(wù)簡(jiǎn)介 1.相關(guān)概念介紹 事務(wù)作用:在數(shù)據(jù)層保障一系列的數(shù)據(jù)庫(kù)操作同成功同失敗 Spring事務(wù)作用:在數(shù)據(jù)層或 業(yè)務(wù)層 保障一系列的數(shù)據(jù)庫(kù)操作同成功同失敗 數(shù)據(jù)層有事務(wù)我們可以理解,為什么業(yè)務(wù)層也需要處理事務(wù)

    2024年02月06日
    瀏覽(24)
  • Spring 事務(wù)管理詳解及使用

    Spring 事務(wù)管理詳解及使用

    ?作者簡(jiǎn)介:2022年 博客新星 第八 。熱愛國(guó)學(xué)的Java后端開發(fā)者,修心和技術(shù)同步精進(jìn)。 ??個(gè)人主頁(yè):Java Fans的博客 ??個(gè)人信條:不遷怒,不貳過。小知識(shí),大智慧。 ??當(dāng)前專欄:SSM 框架從入門到精通 ?特色專欄:國(guó)學(xué)周更-心性養(yǎng)成之路 ??本文內(nèi)容:一文吃透 Spring 中

    2024年01月20日
    瀏覽(35)
  • Spring管理事務(wù)知識(shí)

    Spring管理事務(wù)知識(shí)

    目錄 1.什么是事務(wù) 2.事務(wù)的特性ACID 3.Spring 管理事務(wù)的方式 4.Spring管理事務(wù)的體現(xiàn):JDBCTemplate 5.聲明式事務(wù)的屬性有哪些 6.聲明式事務(wù)屬性---只讀 7.聲明式事務(wù)屬性---超時(shí) 8.聲明式事務(wù)屬性---回滾策略 9.聲明式事務(wù)屬性---事務(wù)隔離級(jí)別 10.聲明式事務(wù)屬性---事務(wù)傳播行為 ?概念

    2024年02月11日
    瀏覽(20)
  • PostgreSQL 的事務(wù)管理和并發(fā)控制機(jī)制解析

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

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

    2024年02月15日
    瀏覽(26)
  • 【spring(四)】Spring事務(wù)管理和@Transactional注解

    【spring(四)】Spring事務(wù)管理和@Transactional注解

    ??鍵盤敲爛,年薪30萬(wàn)?? 目錄 Spring中的事務(wù)管理 問題拋出: 解決方案: @Transactional注解: rollbackFor屬性: propagation屬性: 應(yīng)用: ??總結(jié) 知識(shí)回顧: ?什么是事務(wù) 事務(wù)是對(duì)數(shù)據(jù)操作的集合,它是數(shù)據(jù)操作的最小執(zhí)行單位,也就是說,要么一個(gè)事務(wù)中操作全部執(zhí)行完畢,

    2024年01月17日
    瀏覽(62)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包