Java EE企業(yè)級(jí)框架技術(shù)及案例實(shí)戰(zhàn)-Spring+Spring MVC+MyBatis(微課版) 課件 第九章 Spring事務(wù)管理_第1頁(yè)
Java EE企業(yè)級(jí)框架技術(shù)及案例實(shí)戰(zhàn)-Spring+Spring MVC+MyBatis(微課版) 課件 第九章 Spring事務(wù)管理_第2頁(yè)
Java EE企業(yè)級(jí)框架技術(shù)及案例實(shí)戰(zhàn)-Spring+Spring MVC+MyBatis(微課版) 課件 第九章 Spring事務(wù)管理_第3頁(yè)
Java EE企業(yè)級(jí)框架技術(shù)及案例實(shí)戰(zhàn)-Spring+Spring MVC+MyBatis(微課版) 課件 第九章 Spring事務(wù)管理_第4頁(yè)
Java EE企業(yè)級(jí)框架技術(shù)及案例實(shí)戰(zhàn)-Spring+Spring MVC+MyBatis(微課版) 課件 第九章 Spring事務(wù)管理_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3第九章Spring數(shù)據(jù)庫(kù)事務(wù)管理-掌握數(shù)據(jù)庫(kù)事務(wù)的概念-了解數(shù)據(jù)庫(kù)事務(wù)的ACID特性-了解臟讀、不可重復(fù)讀、幻讀的概念-掌握數(shù)據(jù)庫(kù)事務(wù)的隔離級(jí)別-掌握Spring數(shù)據(jù)庫(kù)事務(wù)管理核心接口-掌握Spring編程式事務(wù)-掌握Spring聲明式事務(wù)01020304050607項(xiàng)目需求背景知識(shí)項(xiàng)目實(shí)現(xiàn)經(jīng)典問題強(qiáng)化本章小結(jié)0102030405E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項(xiàng)目需求01項(xiàng)目需求01項(xiàng)目經(jīng)理老王:小王,你對(duì)事務(wù)了解么,在開發(fā)中我們經(jīng)常需要對(duì)業(yè)務(wù)進(jìn)行事務(wù)處理,如果處理不好會(huì)導(dǎo)致很多問題。程序員小王:我以前在學(xué)習(xí)數(shù)據(jù)庫(kù)時(shí)接觸過(guò)事務(wù),就是一個(gè)業(yè)務(wù)可能會(huì)涉及到多張表,需要執(zhí)行多條sql語(yǔ)句,這些sql應(yīng)該看成一個(gè)整體,全部執(zhí)行成功后才可以提交給數(shù)據(jù)庫(kù),反之只要有一條sql語(yǔ)句執(zhí)行失敗了,那么之前執(zhí)行的即使成功的修改也要撤銷,返回到未執(zhí)行sql語(yǔ)句之前的狀態(tài)。項(xiàng)目經(jīng)理老王:不錯(cuò),看來(lái)你對(duì)于事務(wù)還是有些了解的,但是你知道如果事務(wù)沒有處理好會(huì)帶來(lái)那些問題嗎?還有spring是如何對(duì)事務(wù)進(jìn)行管理的?程序員小王:這個(gè)還不是很清楚,我馬上就著手學(xué)習(xí)相關(guān)知識(shí)。功能描述01根據(jù)用戶需求,我們需要在CRM系統(tǒng)的用戶管理模塊中增加創(chuàng)建新用戶功能,同時(shí)在日志模塊中新增記錄用戶注冊(cè)信息的日志功能,具體描述如下:1. 創(chuàng)建新用戶在用戶管理模塊中增加創(chuàng)建新用戶功能,用戶可以填寫相關(guān)信息,注冊(cè)成功的用戶激活狀態(tài)默認(rèn)為開啟,用戶在注冊(cè)后可以直接登錄系統(tǒng)。2. 記錄用戶注冊(cè)信息當(dāng)用戶注冊(cè)成功后,在日志表中會(huì)記錄用戶的操作信息以及用戶注冊(cè)時(shí)間。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3背景知識(shí)02知識(shí)導(dǎo)圖02事務(wù)的概念02事務(wù)就是將一組原子性的數(shù)據(jù)庫(kù)操作做為一個(gè)獨(dú)立的單元進(jìn)行執(zhí)行,其特點(diǎn)是要么全部執(zhí)行,要么全部不執(zhí)行。例如,一個(gè)事務(wù)是由一組SQL語(yǔ)句組成,只有這些SQL語(yǔ)句全部執(zhí)行成功事務(wù)才算成功,否則只要有一個(gè)SQL語(yǔ)句執(zhí)行錯(cuò)誤,那么之前執(zhí)行過(guò)的所有SQL指令均會(huì)被撤銷。需要注意的是,Spring的事務(wù)支持是基于數(shù)據(jù)庫(kù)事務(wù)的,MySQL數(shù)據(jù)庫(kù)目前只有InnoDB或者NDB引擎才支持,MySQL5.0之前的MyISAM引擎是不支持事務(wù)的。事務(wù)的ACID特性02數(shù)據(jù)庫(kù)事務(wù)具備ACID特性,即原子性(atomicity)、一致性(consistency)、隔離性(isolation)和持久性(durability)。原子性:事務(wù)是數(shù)據(jù)庫(kù)的基本操作單位,它的操作要么全部完成,要么全部不執(zhí)行,不會(huì)結(jié)束在某個(gè)中間環(huán)節(jié)。事務(wù)在執(zhí)行過(guò)程中發(fā)生錯(cuò)誤會(huì)被回滾(Rollback)到事務(wù)開始前的狀態(tài)。一致性:事務(wù)必須保證數(shù)據(jù)庫(kù)狀態(tài)從一個(gè)一致性狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€(gè)一致性狀態(tài),即事務(wù)的執(zhí)行不能破壞數(shù)據(jù)庫(kù)數(shù)據(jù)的完整性和業(yè)務(wù)邏輯的一致性。隔離性:數(shù)據(jù)庫(kù)系統(tǒng)提供一定程度的隔離機(jī)制,保證事務(wù)的隔離性,使得并發(fā)運(yùn)行的多個(gè)事務(wù)相互不干擾,每個(gè)事務(wù)有其獨(dú)立的工作區(qū)域。持久性:一旦事務(wù)提交,則其所做的修改將會(huì)永久保存在數(shù)據(jù)庫(kù)中。即使系統(tǒng)故障,事務(wù)執(zhí)行的結(jié)果也不會(huì)丟失。臟讀、不可重復(fù)讀、幻讀02如果沒有做好事務(wù)的隔離級(jí)別將會(huì)帶來(lái)臟讀、不可重復(fù)讀以及幻讀等問題,其相關(guān)概念如下:臟讀在A事務(wù)修改數(shù)據(jù),提交事務(wù)之前,另外一個(gè)B事務(wù)讀取了A事務(wù)未提交事務(wù)之前的數(shù)據(jù),這種情況稱之為臟讀(DirtyRead)。不可重復(fù)讀一個(gè)事務(wù)在讀取某行數(shù)據(jù)時(shí),如果兩次讀出的結(jié)果不一致,則稱為不可重復(fù)讀,這是因?yàn)樵趦纱螖?shù)據(jù)讀取期間,另外的事務(wù)對(duì)數(shù)據(jù)進(jìn)行了更改?;米x幻讀和不可重復(fù)讀有些類似,它指的是當(dāng)一個(gè)事務(wù)A在兩次讀取數(shù)據(jù)之間,其它的事務(wù)對(duì)該數(shù)據(jù)集進(jìn)行了刪除或新增操作,導(dǎo)致事務(wù)A第二次讀取數(shù)據(jù)出現(xiàn)了少讀或多讀的情況。事務(wù)的隔離級(jí)別02事務(wù)的隔離級(jí)別定義了一個(gè)事務(wù)可能受其它并發(fā)事務(wù)影響的程度,它可以在不同程度上解決上一節(jié)所描述的臟讀、不可重復(fù)讀、幻讀等問題。Spring遵照SQL規(guī)范將隔離級(jí)別定義為5種,分別為默認(rèn)級(jí)別、不可提交讀、提交讀、可重復(fù)讀和序列化,每種隔離級(jí)別的具體描述如表所示:Spring事務(wù)管理核心接口02Spring框架提供了org.springframework.transaction包用于事務(wù)管理,其中的核心接口文件為PlatformTransactionManager、TransactionDefinition和TransactionStatusPlatformTransactionManager接口是Spring提供的平臺(tái)事務(wù)管理器,主要用于管理事務(wù),該接口中提供了多個(gè)事務(wù)操作的方法TransactionDefinition接口是事務(wù)定義的對(duì)象,該對(duì)象定義了事務(wù)規(guī)則,并提供了獲取事務(wù)相關(guān)信息的方法Spring事務(wù)管理核心接口02Spring框架提供了org.springframework.transaction包用于事務(wù)管理,其中的核心接口文件為PlatformTransactionManager、TransactionDefinition和TransactionStatusPlatformTransactionManager接口是Spring提供的平臺(tái)事務(wù)管理器,主要用于管理事務(wù),該接口中提供了多個(gè)事務(wù)操作的方法TransactionDefinition接口是事務(wù)定義的對(duì)象,該對(duì)象定義了事務(wù)規(guī)則,并提供了獲取事務(wù)相關(guān)信息的方法TransactionStatus接口是事務(wù)的狀態(tài),它描述了某一時(shí)間點(diǎn)上事務(wù)的狀態(tài)信息事務(wù)的傳播行為02事務(wù)的傳播行為是指當(dāng)一個(gè)事務(wù)方法被另一個(gè)事務(wù)方法調(diào)用時(shí),該事務(wù)方法會(huì)以何種狀態(tài)運(yùn)行事務(wù)的管理方式02在Spring中實(shí)現(xiàn)事務(wù)管理有兩種方式。一種是傳統(tǒng)的編程式事務(wù)管理,另一種是聲明式事務(wù)管理,它們的特點(diǎn)如下:編程式事務(wù)管理:開發(fā)人員通過(guò)編寫代碼實(shí)現(xiàn)事務(wù)的管理,包括定義事務(wù)的開始、正常執(zhí)行后的事務(wù)提交和異常時(shí)的事務(wù)回滾。聲明式事務(wù)管理:通過(guò)AOP技術(shù)實(shí)現(xiàn)事務(wù)的管理,其主要思想是將事務(wù)管理作為一個(gè)"切面"代碼單獨(dú)編寫,然后通過(guò)AOP技術(shù)將事務(wù)管理的"切面"代碼織入到業(yè)務(wù)目標(biāo)類中?;赬ML方式的聲明式事務(wù)管理02基于XML的聲明式事務(wù)管理是通過(guò)在配置文件中配置事務(wù)規(guī)則的相關(guān)聲明來(lái)實(shí)現(xiàn)的。Spring2.0以后,提供了tx命名空間來(lái)實(shí)現(xiàn)聲明式事務(wù)管理,其中<tx:advice>元素被用來(lái)配置事務(wù)的通知(增強(qiáng)處理)。當(dāng)使用<tx:advice>元素配置了事務(wù)的增強(qiáng)處理后,就可以通過(guò)編寫的AOP配置,讓Spring自動(dòng)對(duì)目標(biāo)生成代理?;贏nnotation方式的聲明式事務(wù)02Spring的聲明式事務(wù)管理還可以通過(guò)Annotation(注解)的方式來(lái)實(shí)現(xiàn)。這種方式的使用非常簡(jiǎn)單,需要兩個(gè)步驟即可實(shí)現(xiàn)。①在Spring容器中注冊(cè)事務(wù)注解驅(qū)動(dòng)<tx:annotation-driventransaction-manager="transactionManager"/>②在需要使用事務(wù)的SpringBean類或者Bean類的方法上添加注解@Transactional如果將注解添加在Bean類上,則表示事務(wù)的設(shè)置對(duì)整個(gè)Bean類的所有方法都起作用。如果將注解添加在Bean類中的某個(gè)方法上,則表示事務(wù)的設(shè)置只對(duì)該方法有效E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3項(xiàng)目實(shí)現(xiàn)03業(yè)務(wù)場(chǎng)景03業(yè)務(wù)場(chǎng)景描述:項(xiàng)目經(jīng)理老王:小王,通過(guò)這幾天的學(xué)習(xí),對(duì)于spring管理事務(wù)的原理掌握了嗎?程序員小王:我現(xiàn)在對(duì)spring的事務(wù)管理基本掌握了,使用聲明式事務(wù)處理中的基于注解方式對(duì)事務(wù)進(jìn)行管理就非常方便。項(xiàng)目經(jīng)理老王:好的,現(xiàn)在有一個(gè)需求要你完成,就是當(dāng)用戶模塊中新增加用戶時(shí),需要在日志表中同時(shí)添加一條新記錄,記錄用戶新增操作是否成功以及新增用戶的時(shí)間,這個(gè)需要使用spring事務(wù)完成,你抓緊時(shí)間實(shí)現(xiàn)。程序員小王:好的,我覺得這個(gè)需求不是很難,我這就去做。項(xiàng)目整體結(jié)構(gòu)03mapper:存放DAO層實(shí)現(xiàn),包含UserMapper和LogMapper接口以及對(duì)應(yīng)實(shí)現(xiàn)XML文件。pojo:存放實(shí)體類User對(duì)象。service:存放業(yè)務(wù)層接口UserService及其實(shí)現(xiàn)類UserServiceImpl。util:存放工具類,包括用于加密的MD5Util工具類。resources:存放配置文件,包含Spring的配置文件applicationContext.xml和數(shù)據(jù)庫(kù)配置文件perties以及l(fā)og4j的配置文件perties。E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3經(jīng)典問題強(qiáng)化04經(jīng)典問題強(qiáng)化04Spring編程式事務(wù)與聲明式事務(wù)的區(qū)別?局部事務(wù)與全局事務(wù)的區(qū)別?結(jié)合CRM系統(tǒng)描述Spring是如何處理事務(wù)的?E6636BC20180234D78A0072836F0BA7012B9B20215E26B50ACD98F3EB1392B551B4EBF38216C3B0222692E0838460BEBE009217A41D02B111BBFC23A765E14D124F449AD6A2784D7348224B76F624F873694ECB77C9D5FC1A8B6E19E00602C88DA962B9CCE3本章小結(jié)05

本章小結(jié)05本章首先講解了事務(wù)的概念、特性、事務(wù)隔離級(jí)別以及隔離未處理所導(dǎo)致的問題,然后講解了Spring事務(wù)管理所涉及的核心接口和Spring對(duì)事務(wù)的管理方式,同時(shí)重點(diǎn)介紹了利用注解實(shí)現(xiàn)聲明式事務(wù)管理的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論