欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

spring聲明式事務(wù)管理解析

 更新時(shí)間:2016年10月24日 17:24:16   作者:程序_小咖  
這篇文章主要為大家詳細(xì)介紹了spring聲明式事務(wù)管理,對(duì)spring事務(wù)管理進(jìn)行深入了解,感興趣的小伙伴們可以參考一下

前沿:通過(guò)對(duì)spring事務(wù)管理有了比較深入學(xué)習(xí),本文將不做實(shí)例,而是指定具體的類和配置文件進(jìn)行講解。

本文內(nèi)容:

  1、了解什么是聲明式事務(wù)?

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

  3、這幾種事務(wù)管理之間的區(qū)別是什么?

一、什么是聲明式事務(wù)?

  聲明式事務(wù)(declarative transaction management)是spring提供的對(duì)程序事務(wù)管理的方式之一。Spring的聲明式事務(wù)就是采用聲明的方式來(lái)處理事務(wù),用在Spring配置文件中聲明式的處理事務(wù)來(lái)代替代碼式的處理事務(wù)。這樣的好處是,事務(wù)管理不侵入開(kāi)發(fā)的組件,具體來(lái)說(shuō),業(yè)務(wù)邏輯對(duì)象就不會(huì)意識(shí)到正在事務(wù)管理之中,事實(shí)上也應(yīng)該如此,因?yàn)槭聞?wù)管理是屬于系統(tǒng)層面的服務(wù),而不是業(yè)務(wù)邏輯的一部分,如果想要更改事務(wù)管理,也只需要在定義的配置文件中修改配置即可,在不需要事務(wù)管理的時(shí)候,只要在配置文件上修改一下,即可移去事務(wù)管理服務(wù),無(wú)需改變代碼重新編譯,這樣維護(hù)起來(lái)極其方便。

二、聲明式事務(wù)管理方式。  

首先在還沒(méi)說(shuō)聲明式事務(wù)管理方式之前先看看原始的事務(wù)管理。

  由上圖可以看出,首先我們需要建立一個(gè)新的session.openSession(),其次通過(guò)session的getTransaction().begin()方法和getTransaction().commit()方法進(jìn)行事務(wù)創(chuàng)建和事務(wù)提交,并且需要關(guān)閉session.close(),這樣一來(lái)我們每次調(diào)用這個(gè)方法都會(huì)重新創(chuàng)建一個(gè)新的session,都要反復(fù)的做一樣的事情,這樣就不符合我們的軟件工程設(shè)計(jì)思想,接下來(lái)我們使用聲明式事務(wù)管理方式進(jìn)行對(duì)代碼的簡(jiǎn)化和調(diào)整。

1、使用springAOP聲明式事務(wù)管理。

1.1、我們需要導(dǎo)入aop的幾個(gè)包:

  

1.2、然后在application.xml配置文件中進(jìn)行事務(wù)配置: 

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

  經(jīng)過(guò)上面講解,我們可以看得出對(duì)showAllNews()方法的修改,首先我們將原來(lái)的openSession()方法改為了getCurrentSession()方法(注:截圖有注釋說(shuō)明他們的區(qū)別,我就不再重復(fù)),并且不需要再手動(dòng)去創(chuàng)建事務(wù)和提交事務(wù),我們的springAOP會(huì)自動(dòng)對(duì)事務(wù)進(jìn)行管理、自動(dòng)的關(guān)閉session。

2、使用@Transactional注解方式。

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

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

2.3、給NewsServiceImpl添加注解。

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

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

 

3、使用SpringAOP配置的聲明式事務(wù)管理跟@Transactional注解的區(qū)別:

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

   2)@Transactional注解可讀性較高,內(nèi)容分散不利于統(tǒng)一的管理和維護(hù),耦合性較高。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MacBook Java開(kāi)發(fā)環(huán)境搭建的詳細(xì)步驟(新手必備)

    MacBook Java開(kāi)發(fā)環(huán)境搭建的詳細(xì)步驟(新手必備)

    本文主要介紹了MacBook Java開(kāi)發(fā)環(huán)境搭建,文中通過(guò)圖文示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Java 異常處理小結(jié),從入門到精通

    Java 異常處理小結(jié),從入門到精通

    這篇文章主要介紹了Java 異常處理小結(jié),從入門到精通,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 淺談MyBatis-plus入門使用

    淺談MyBatis-plus入門使用

    這幾天本人了解到了MyBatis-plus,一個(gè) Mybatis 增強(qiáng)工具包.經(jīng)過(guò)一番研究,發(fā)現(xiàn)這玩意真的好用,不用寫任何 xml ,內(nèi)置通用的 Mapper,而且完全是面向?qū)ο缶幊?文檔給的示例代碼,跟之前用過(guò)的 sequelize (Node.js 的 ORM)非常像,因此本人也嘗試了一把, 需要的朋友可以參考下
    2021-05-05
  • java解析xml匯總_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    java解析xml匯總_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了java解析xml匯總_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實(shí)例

    Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實(shí)例

    下面小編就為大家?guī)?lái)一篇Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 從JVM的內(nèi)存管理角度分析Java的GC垃圾回收機(jī)制

    從JVM的內(nèi)存管理角度分析Java的GC垃圾回收機(jī)制

    這篇文章主要介紹了從JVM的內(nèi)存管理角度分析Java的GC垃圾回收機(jī)制,帶有GC是Java語(yǔ)言的重要特性之一,需要的朋友可以參考下
    2015-11-11
  • Java運(yùn)行時(shí)數(shù)據(jù)區(qū)域(內(nèi)存劃分)的深入講解

    Java運(yùn)行時(shí)數(shù)據(jù)區(qū)域(內(nèi)存劃分)的深入講解

    聽(tīng)說(shuō)Java運(yùn)行時(shí)環(huán)境的內(nèi)存劃分是挺進(jìn)BAT的必經(jīng)之路,這篇文章主要給大家介紹了關(guān)于Java運(yùn)行時(shí)數(shù)據(jù)區(qū)域(內(nèi)存劃分)的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • Java 8 動(dòng)態(tài)類型語(yǔ)言Lambda表達(dá)式實(shí)現(xiàn)原理解析

    Java 8 動(dòng)態(tài)類型語(yǔ)言Lambda表達(dá)式實(shí)現(xiàn)原理解析

    Java 8支持動(dòng)態(tài)語(yǔ)言,看到了很酷的Lambda表達(dá)式,對(duì)一直以靜態(tài)類型語(yǔ)言自居的Java,讓人看到了Java虛擬機(jī)可以支持動(dòng)態(tài)語(yǔ)言的目標(biāo)。接下來(lái)通過(guò)本文給大家介紹Java 8 動(dòng)態(tài)類型語(yǔ)言Lambda表達(dá)式實(shí)現(xiàn)原理分析,需要的朋友可以參考下
    2017-02-02
  • myeclipse智能提示設(shè)置的實(shí)現(xiàn)方法

    myeclipse智能提示設(shè)置的實(shí)現(xiàn)方法

    本篇文章介紹了,myeclipse智能提示設(shè)置的實(shí)現(xiàn)方法。需要的朋友參考下
    2013-05-05
  • 詳細(xì)解讀JAVA多線程實(shí)現(xiàn)的三種方式

    詳細(xì)解讀JAVA多線程實(shí)現(xiàn)的三種方式

    本篇文章主要介紹了詳細(xì)解讀JAVA多線程實(shí)現(xiàn)的三種方式,主要包括繼承Thread類、實(shí)現(xiàn)Runnable接口、使用ExecutorService、Callable、Future實(shí)現(xiàn)有返回結(jié)果的多線程。有需要的可以了解一下。
    2016-11-11

最新評(píng)論