spring聲明式事務管理解析
前沿:通過對spring事務管理有了比較深入學習,本文將不做實例,而是指定具體的類和配置文件進行講解。
本文內(nèi)容:
1、了解什么是聲明式事務?
2、聲明式事務管理分別有哪幾種?
3、這幾種事務管理之間的區(qū)別是什么?
一、什么是聲明式事務?
聲明式事務(declarative transaction management)是spring提供的對程序事務管理的方式之一。Spring的聲明式事務就是采用聲明的方式來處理事務,用在Spring配置文件中聲明式的處理事務來代替代碼式的處理事務。這樣的好處是,事務管理不侵入開發(fā)的組件,具體來說,業(yè)務邏輯對象就不會意識到正在事務管理之中,事實上也應該如此,因為事務管理是屬于系統(tǒng)層面的服務,而不是業(yè)務邏輯的一部分,如果想要更改事務管理,也只需要在定義的配置文件中修改配置即可,在不需要事務管理的時候,只要在配置文件上修改一下,即可移去事務管理服務,無需改變代碼重新編譯,這樣維護起來極其方便。
二、聲明式事務管理方式。
首先在還沒說聲明式事務管理方式之前先看看原始的事務管理。

由上圖可以看出,首先我們需要建立一個新的session.openSession(),其次通過session的getTransaction().begin()方法和getTransaction().commit()方法進行事務創(chuàng)建和事務提交,并且需要關閉session.close(),這樣一來我們每次調(diào)用這個方法都會重新創(chuàng)建一個新的session,都要反復的做一樣的事情,這樣就不符合我們的軟件工程設計思想,接下來我們使用聲明式事務管理方式進行對代碼的簡化和調(diào)整。
1、使用springAOP聲明式事務管理。
1.1、我們需要導入aop的幾個包:

1.2、然后在application.xml配置文件中進行事務配置:

1.3、將查詢所有數(shù)據(jù)那個方法進行修改:

經(jīng)過上面講解,我們可以看得出對showAllNews()方法的修改,首先我們將原來的openSession()方法改為了getCurrentSession()方法(注:截圖有注釋說明他們的區(qū)別,我就不再重復),并且不需要再手動去創(chuàng)建事務和提交事務,我們的springAOP會自動對事務進行管理、自動的關閉session。
2、使用@Transactional注解方式。
2.1、首先我們需要在application.xml配置文件中進行事務配置(通知Spring容器對注解@Transactional的Bean處理):

2.2、然后在NewsDaoImpl中不需要做任何的操作和修改:

2.3、給NewsServiceImpl添加注解。
在這里我們@Transactional注解可以添加到類上(表示所有的方法都加入事務管理),也可以在具體的方法加上注解@Transactional,如果是不用對數(shù)據(jù)進行修改的方法要添加一個屬性。
比如:查詢所有數(shù)據(jù)的方法@Transactional(readOnly=true)

3、使用SpringAOP配置的聲明式事務管理跟@Transactional注解的區(qū)別:
1)SpringAOP配置聲明式事務管理耦合性低,可讀性低,表達較詳細,靈活性也高。
2)@Transactional注解可讀性較高,內(nèi)容分散不利于統(tǒng)一的管理和維護,耦合性較高。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot2整合Ehcache組件實現(xiàn)輕量級緩存管理
EhCache是一個純Java的進程內(nèi)緩存框架,具有快速、上手簡單等特點,是Hibernate中默認的緩存提供方。本文講述下SpringBoot2 整合Ehcache組件的步驟2021-06-06
在IDEA中使用debug工具去運行java程序的實現(xiàn)步驟
調(diào)試工具(debug工具)是一種用于幫助程序員識別和修復程序中的錯誤的工具,它們提供了一系列的功能,幫助程序員在代碼執(zhí)行的過程中跟蹤和檢測問題,本文將給大家介紹使用debug工具去運行java程序的實現(xiàn)步驟,需要的朋友可以參考下2024-04-04
spring boot 項目利用Jenkins實現(xiàn)自動化部署的教程詳解
這篇文章主要介紹了spring boot 項目利用Jenkins實現(xiàn)自動化部署的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07
Java實現(xiàn)讀取Excel文件功能(EasyExcel初使用)
EasyExcel是一款基于Java語言的開源Excel解析工具,可以幫助我們快速、高效地讀取和寫入Excel文件,這篇文章主要給大家介紹了關于Java實現(xiàn)讀取Excel文件功能的相關資料,使用的是EasyExcel,需要的朋友可以參考下2024-07-07
SpringBoot多數(shù)據(jù)源配置并通過注解實現(xiàn)動態(tài)切換數(shù)據(jù)源
本文主要介紹了SpringBoot多數(shù)據(jù)源配置并通過注解實現(xiàn)動態(tài)切換數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
簡單談談Java遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式
這篇文章主要介紹了簡單談談Java遍歷樹深度優(yōu)先和廣度優(yōu)先的操作方式的相關資料,需要的朋友可以參考下2023-03-03

