11 Spring教程之宣告式事務

2022-07-03 08:18:14 字數 1964 閱讀 7656

事務就是把一系列的動作當成乙個獨立的工作單元,這些動作要麼全部完成,要麼全部不起作用。

事務四個屬性acid

原子性(atomicity)

一致性(consistency)

隔離性(isolation)

永續性(durability)

測試
將上面的**拷貝到乙個新專案中

在之前的案例中,我們給userdao介面新增兩個方法,刪除和增加使用者;

//新增乙個使用者

int adduser(user user);

//根據id刪除使用者

int deleteuser(int id);

insert into user (id,name,pwd) values (#,#,#)

deletes from user where id = #

編寫介面的實現類,在實現類中,我們去操作一波

//增加一些操作

public listselectuser()

//新增

public int adduser(user user)

//刪除

public int deleteuser(int id) }測試

@test

public void test2()

報錯:sql異常,delete寫錯了

結果 :插入成功!

沒有進行事務的管理;我們想讓他們都成功才成功,有乙個失敗,就都失敗,我們就應該需要事務!

以前我們都需要自己手動管理事務,十分麻煩!

但是spring給我們提供了事務管理,我們只需要配置即可;

spring在不同的事務管理api之上定義了乙個抽象層,使得開發人員不必了解底層的事務管理api就可以使用spring的事務管理機制。spring支援程式設計式事務管理和宣告式的事務管理。

程式設計式事務管理

宣告式事務管理

使用spring管理事務,注意標頭檔案的約束匯入 : tx

xmlns:tx=""

/spring-tx.xsd">

事務管理器

jdbc事務

配置好事務管理器後我們需要去配置事務的通知

spring事務傳播特性:

事務傳播行為就是多個事務方法相互呼叫時,事務如何在這些方法間傳播。spring支援7種事務傳播行為:

spring 預設的事務傳播行為是 propagation_required,它適合於絕大多數的情況。

假設 servivex#methodx() 都工作在事務環境下(即都被 spring 事務增強了),假設程式中存在如下的呼叫鏈:service1#method1()->service2#method2()->service3#method3(),那麼這 3 個服務類的 3 個方法通過 spring 的事務傳播機制都工作在同乙個事務中。

就好比,我們剛才的幾個方法存在呼叫,所以會被放在一組事務當中!

配置aop

匯入aop的標頭檔案!

進行測試

刪掉剛才插入的資料,再次測試!

@test

public void test2()

思考問題?

為什麼需要配置事務?

Spring之宣告式事務TX

1 為什麼使用事務?學習mybatis的時候,mybatis中的事務和jdbc事務是一致的,那麼spring中式如何進行事務管理的呢?2 事務管理的方式 程式設計式事務 整個事務管理都是需要程式設計師自己手動編寫,自己提交或者回滾 宣告式事務 就是整個事務的管理操作,不需要我們自己書寫,現在spri...

spring事務管理(宣告式事務和程式設計式事務)

spring的事務管理分為 宣告式事務和程式設計式事務 spring對事務管理通常分為三部分 datasource transactionmanager和 機制這三部分,無論哪種配置方式,一般變化的只是 機制這部分。hibernate.dialect org.hibernate.dialect.my...

spring事務管理(宣告式事務和程式設計式事務)

spring hibernate.dialect org.hibernate.dialect.mysqldialect hibernate.show sql true hibernate.hbm2ddl.auto update 2.spring事務管理 前面一部分主要配置資料來源 datasourc...