国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

spring聲明式事務管理解析

2019-11-26 13:40:08
字體:
來源:轉載
供稿:網友

前沿:通過對spring事務管理有了比較深入學習,本文將不做實例,而是指定具體的類和配置文件進行講解。

本文內容:

  1、了解什么是聲明式事務?

  2、聲明式事務管理分別有哪幾種?

  3、這幾種事務管理之間的區別是什么?

一、什么是聲明式事務?

  聲明式事務(declarative transaction management)是spring提供的對程序事務管理的方式之一。Spring的聲明式事務就是采用聲明的方式來處理事務,用在Spring配置文件中聲明式的處理事務來代替代碼式的處理事務。這樣的好處是,事務管理不侵入開發的組件,具體來說,業務邏輯對象就不會意識到正在事務管理之中,事實上也應該如此,因為事務管理是屬于系統層面的服務,而不是業務邏輯的一部分,如果想要更改事務管理,也只需要在定義的配置文件中修改配置即可,在不需要事務管理的時候,只要在配置文件上修改一下,即可移去事務管理服務,無需改變代碼重新編譯,這樣維護起來極其方便。

二、聲明式事務管理方式。  

首先在還沒說聲明式事務管理方式之前先看看原始的事務管理。

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

1、使用springAOP聲明式事務管理。

1.1、我們需要導入aop的幾個包:

  

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

1.3、將查詢所有數據那個方法進行修改:

  經過上面講解,我們可以看得出對showAllNews()方法的修改,首先我們將原來的openSession()方法改為了getCurrentSession()方法(注:截圖有注釋說明他們的區別,我就不再重復),并且不需要再手動去創建事務和提交事務,我們的springAOP會自動對事務進行管理、自動的關閉session。

2、使用@Transactional注解方式。

2.1、首先我們需要在application.xml配置文件中進行事務配置(通知Spring容器對注解@Transactional的Bean處理):

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

2.3、給NewsServiceImpl添加注解。

在這里我們@Transactional注解可以添加到類上(表示所有的方法都加入事務管理),也可以在具體的方法加上注解@Transactional,如果是不用對數據進行修改的方法要添加一個屬性。

比如:查詢所有數據的方法@Transactional(readOnly=true)

 

3、使用SpringAOP配置的聲明式事務管理跟@Transactional注解的區別:

   1)SpringAOP配置聲明式事務管理耦合性低,可讀性低,表達較詳細,靈活性也高。

   2)@Transactional注解可讀性較高,內容分散不利于統一的管理和維護,耦合性較高。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松潘县| 麻江县| 沅陵县| 渝北区| 时尚| 刚察县| 西乡县| 灵石县| 重庆市| 兴义市| 息烽县| 江山市| 定边县| 延边| 大城县| 汾阳市| 乌拉特中旗| 上林县| 德江县| 会昌县| 江城| 平邑县| 巩留县| 右玉县| 淄博市| 贵溪市| 徐闻县| 原阳县| 成都市| 乃东县| 玉屏| 台中市| 贵南县| 连州市| 依安县| 永昌县| 香河县| 上饶县| 上林县| 莒南县| 惠安县|