spring入門到放棄——spring事務管理

Spring事務提供了兩種管理的的方式:編程式事務和聲明式事務

簡單回顧下事務:

事務:邏輯上的一組操作,組成操作的各個單元,要么全部成功,要么全部失敗。

事務特性:

原子性:一個事務包含的各個操作單元不可分割

一致性:事務執行前后數據應當保持一致

隔離性:一個事務的執行不應當受到其他事務的干擾

持久性:事務執行完之后,數據就被持久化到磁盤上

Spring事務管理常用的API:
PlatformTransactionmanager:平臺事務管理器

平臺事務管理器:是一個接口,是spring用于管理事務的真正的對象

? ? ? DataSourceTransactionManager:底層使用JDBC管理事務的時候的具體實現類

? ? ? HibernateTransactionManager:底層使用Hibernate管理事務時候的具體實現類

TransactionDefinition:事務定義信息

事務定義:用于定義事務的相關的信息,隔離級別、超時信息、傳播行為、是否只讀

TransactionStatus:事物的狀態

事務狀態:用于記錄事務管理過程中,事務的狀態的對象。

事務管理API的關系:

spring進行事務管理的時候,首先平臺事務管理器根據事務定義信息進行事務的管理,在事務管理過程中,就會產生各種狀態,將這些狀態及信息記錄到事務狀態的對象中。

Spring事務的傳播行為
spring事務傳播行為主要負責業務層之間互相調用的復雜問題。spring會提供7種事務的傳播行為,大概可以分為三類:

假設有A/B兩個方法,各自包含不同的事務操作。
保證多個操作在同一個事務中?
PROPAGATION_REQUIRED?(常用):默認值,B事務所在的方法調用A事務所在的方法,如果A中有事務,則使用A中的事務(包含B事務),如果A沒有,創建一個新的事務,將操作包含進來
PROPAGATION_MANDATORY :如果A中有事務,使用A中的事務。如果A沒有事務,拋出異常。
PROPAGATION_SUPPORTS :支持事務,如果A中有事務,使用A中的事務。如果A沒有事務,不使用事務。
保證多個操作不在同一個事務中
???????PROPAGATION_REQUIRES_NEW?(常用):B事務所在的方法調用A事務所在的方法,如果A中有事務,將A的事務掛起(暫停),創建新事務,只包含B自身操作。如果A中沒有事務,創建一個新事務,包含B自身操作。
PROPAGATION_NEVER :如果A中有事務,報異常。
PROPAGATION_NOT_SUPPORTED :如果A中有事務,將A的事務掛起。不使用事務管理
嵌套式事務
PROPAGATION_NESTED?(常用):嵌套事務,B事務所在的方法調用A事務所在的方法,如果A中有事務,按照A的事務執行,執行完成后,設置一個保存點,執行B中的操作,如果沒有異常,執行通過,如果有異常,可以選擇回滾到最初始位置(A執行前),也可以回滾到保存點。
Spring的事務管理
聲明式事務管理:

xml方式聲明事務管理:

<!--配置service-->
<bean id="accountservice" class="com.demo1.tx.AccountServiceImp">
<property name="accountDao" ref="accountdao"/>
</bean>

<!--配置dao-->
<bean id="accountdao" class="com.demo1.dao.AccountDaoImp">
<property name="dataSource" ref="datasource"/>
</bean>
<!--1、配置數據庫連接池,引入數據庫配置文件-->
<context:property-placeholder location="classpath:com/demo1/jdbc.properties"/>
<bean id="datasource" class="www".120xh.cn"com.mchange.www.dfgj157.com?v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"www.fengshen157.com//>
<property name="password" value="${jdbc.password}"/>
</bean>

<!--2、配置事務管理器-->
<bean id="transactionManager" class= "org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasource"/>
</bean>


<!--3、配置事務的增強:需要注入一個事務管理器屬性-->
<tx:advice transaction-manager="transactionManager" id="txadvice">
<tx:attributes>
<!--事務管理的規則-->
<tx:method name="*" propagation="REQUIRED"/> <!--表示設置所有方法的傳播行為為required-->
</tx:attributes>
</tx:advice>
<!--4、aop的配置-->
<aop:config>
<aop:pointcut id="pointcut1" expression="execution(* com.demo1.tx.AccountServiceImp.*(..))"/>
<!--配置切入點為AccountServiceImp類下面的所有方法-->
<!-- <aop:aspect/> 多個切入點和多個通知的組合-->
<!--一個切入點和一個通知的組合-->
<aop:advisor advice-ref="txadvice" pointcut-ref="pointcut1"/>
</aop:config>
注解方式聲明事務管理:

配置事務管理器
<bean id="transactionManager" class= "org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="datasource"/> </bean>
開啟事務注解
??????????????<tx:annotation-driven transaction-manager="transactionManager"/>
業務層方式上添加注解

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537614.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537614.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537614.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高德百度地圖如何獲取附近小區酒店銀行等?

概述 實現以下功能&#xff1a;根據當前定位&#xff0c;查找附近小區 實現步驟 高德&#xff0c;百度地圖實現方式相同&#xff0c;步驟都是如下&#xff1a; 1.獲取當前位置的經緯度 2.查詢poitype編碼。 &#xff08;小區&#xff0c;寫字樓&#xff0c;銀行&#xff0…

angular 字符串轉換成數字_Python基礎語法大全:字符串的處理與使用

本文來自牛鷺學院學員&#xff1a;鄧瑞杰字母處理string.capitalize()返回元字符串&#xff0c;且將字符串第一個字母轉為大寫&#xff0c;其它字母小寫string.title()返回元字符串&#xff0c;且將字符串第一個字母轉為大寫&#xff0c;其它字母小寫string.swapcase()用于對字…

Java實現MD5編碼32位

加入依賴包 <dependency><groupId>org.apache.directory.studio</groupId><artifactId>org.apache.commons.codec</artifactId><version>1.8</version></dependency> 實現代碼 DigestUtils.md5Hex(字符串)

計算機二級考試python_全國計算機等級考試考試大綱(2018年版)

級別 大綱名稱 一級 一級計算機基礎及WPS Office應用考試大綱&#xff08;2018年版&#xff09;點擊下載 一級計算機基礎及MS Office應用考試大綱&#xff08;2018年版&#xff09;點擊下載 一級計算機基礎及Photoshop應用考試大綱&#xff08;2018年版&#xff09;點擊下載 一…

人工智能的就業方向

關于AI在的就業方向主要有&#xff0c;科研機構(機器人研究所等)&#xff0c;軟硬件開發人員&#xff0c;高校講師等&#xff0c;在國內的話就業前景是比較好的&#xff0c;國內產業升級&#xff0c;IT行業的轉型工業和機器人和智能機器人以及可穿戴設備的研發將來都是強烈的熱…

1億像素的真相

世界那么大&#xff0c;謝謝你來看我&#xff01;&#xff01;關注我你就是個網絡、電腦、手機小達人 喬布斯曾說&#xff0c;“手機拍照上主打高像素&#xff0c;是手機廠商利用廣大消費者對照片成像原理知識漏洞的表現。” 小米發布了一款有1億像素的概念型手機&#xff0c…

python實現鏈表的刪除_Python中 為我們提供了一些獨特的解決方案的方法特性

實際上&#xff0c;在日常的工作中&#xff0c;我們很多需求&#xff0c;無論是常見的、還是不常見的&#xff0c;Python 都為我們提供了一些獨特的解決方案&#xff0c;既不需要自己造輪子&#xff0c;也不需要引入新的依賴(引入新的依賴勢必會增加項目的復雜度)。但是 Python…

打通C/4HANA和S/4HANA的一個原型開發:智能服務創新案例

2019獨角獸企業重金招聘Python工程師標準>>> 今年6月SAP發布C/4HANA之后&#xff0c;有顧問朋友們在公眾號后臺留言&#xff0c;詢問C/4HANA如何同SAP的數字化核心S/4HANA系統結合起來&#xff0c;從而打通企業的前后端業務&#xff0c;幫助企業實現數字化轉型。 有…

爬蟲的重要思想

1.理論上講只要網頁上面能夠看到的數據都是可以爬取的&#xff0c;因為所有看到的網頁上的數據都是服務器發送到我們電腦上面的&#xff0c;只是有的數據加密過&#xff0c;很難解密。 2.在網頁上無法看到或者無法獲取的數據&#xff0c;爬蟲同樣不可能拿到&#xff0c;比如一…

python web環境傻瓜搭建_python——web 環境搭建

1.安裝引用第三方庫 selenium pip install selenium 2.下載瀏覽器驅動&#xff08;驅動版本和瀏覽器版本要對應參考鏈接 http://npm.taobao.org/mirrors/chromedriver/&#xff09; 查看瀏覽器驅動對應關系&#xff0c;本次已最新驅動版本作為教材講解 版本2.42 發布時間2018.9…

項目管理十大知識領域,為何不含

問&#xff1a;項目管理十大知識領域&#xff0c;為何不含以下幾項&#xff1a;立項管理&#xff0c;合同管理&#xff0c;文檔管理&#xff0c;變更管理&#xff1f; 答&#xff1a; 立項完了才有項目&#xff1b; 合同管理包含在采購管理&#xff1b; 變更管理在整體管理&am…

B站視頻下載(VideoHelper)

繼續上次的知乎爬蟲&#xff0c; 這次開始了嗶哩嗶哩的爬蟲實踐&#xff1b; 首先介紹下如何下載吧&#xff1a; VideoHelper 里面有三種方式下載b站視頻。 同樣的流程&#xff0c; 還是先抓包&#xff0c;分析參數&#xff0c;尋找參數&#xff08;包括之前的請求包和頁面源碼…

在職場遇到一個總是說話帶刺的同事怎么相處?

網友&#xff1a; 帶刺的人如果總是撲空&#xff0c;或者總是戳進一團棉花&#xff0c;你說他&#xff0c;她還能堅持多久。職場重心是工作&#xff0c;是做事&#xff0c;不要為這些無聊的人事太費心&#xff0c;刺猬帶著刺到處轉&#xff0c;最后結果不會好的。 網友&#xf…

postgresql 怎么讀_大數據采集和抽取怎么做?這篇文章終于說明白了!

本文來源于公眾號【胖滾豬學編程】&#xff0c;轉載請注明出處&#xff01; 關于數據中臺的概念和架構&#xff0c;我們在大白話 六問數據中臺和數據中臺全景架構及模塊解析&#xff01;一文入門中臺架構師&#xff01;兩篇文章中都說明白了。從這一篇文章開始分享中臺落地實戰…

ZooKeeper應用——解決分布式系統單點故障

1.單點故障問題什么是分布式系統中的單點故障&#xff1a;通常分布式系統采用主從模式&#xff0c;就是一個主控機連接多個處理節點。主節點負責分發任務&#xff0c;從節點負責處理任務&#xff0c;當我們的主節點發生故障時&#xff0c;那么整個系統就都癱瘓了&#xff0c;那…

老板思維:有支出必須有對應的收入

項目經理 要時刻關注“有支出必須有對應的收入”。 當手頭的項目產生支出時&#xff0c;必須要問自己&#xff0c;從哪里收入來填補這個支出&#xff0c;如果沒有可收入的&#xff0c;那就是公司虧錢了。如果一定要虧錢&#xff0c;那可否產生收入之外的效益。 甲方提了新需求…

生活之難:生活到底難在哪里

生活之難&#xff1a;生活到底難在哪里 一、總結 一句話總結&#xff1a;難在天性&#xff0c;難在競爭&#xff0c;難在積累&#xff0c;難在追求&#xff0c;難在自己 難在天性 人的天性就是好吃懶做好玩不動腦的&#xff0c;但是生存的壓力&#xff08;食物&#xff0c;房子…

解決org.springframework.web.multipart.MaxUploadSizeExceededException報錯問題

在springboot中接收到上傳的文件時候&#xff0c;出現了這種錯誤 org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.Fil…

python中元祖 字典 列表的區別_Python中元祖,列表,字典的區別

原博文 2016-08-16 15:25 ? Python中有3種內建的數據結構&#xff1a;列表、元祖和字典&#xff1a; 1.列表 list是處理一組有序項目的數據結構&#xff0c;即你可以在一個列表中存儲一個序列的項目。 列表中的項目應該包括在方括號中&#xff0c;這樣Python就知道你是指明一個…

react 16.6 懶加載 Lazy 嘗鮮

react 16.6 發布了新的功能 lazy &#xff0c;和一個組件 Suspense 下面我們看一下他的用法 首先我們先創建兩個組件 LazyTest.1 和 LazyTest.2&#xff0c;內容相同 import React, { Component } from reactexport default class LazyTest extends Component{render(){return …