Spring事務實現方式

2021-09-27 04:38:45 字數 1926 閱讀 7830

1.一種是使用xml實現事務(開發基本不用)

@transactional的所有可選屬性:

-----propagation:用於設定事務傳播屬性。該屬性型別為 propagation 列舉,預設值為 propagation.required。

-----isolation:用於設定事務的隔離級別。該屬性型別為 isolation 列舉 ,預設值為 isolation.default。

-----readonly:用於設定該方法對資料庫的操作是否是唯讀的。該屬性為 boolean,預設值為 false。

-----timeout:用於設定本操作與資料庫連線的超時時限。單位為秒,型別為 int,預設值為 -1,即沒有時限。

-----rollbackfor:指定需要回滾的異常類。型別為 class,預設值為空陣列。當然,若只有乙個異常類時,可以不使用陣列。

-----rollbackforclassname:指定需要回滾的異常類類名。型別為 string,預設值為空陣列。當然,若只有乙個異常類時,可以不使用陣列。

-----norollbackfor:指定不需要回滾的異常類。型別為 class,預設值為空陣列。當然,若只有乙個異常類時,可以不使用陣列。

-----norollbackforclassname: 指定不需要回滾的異常類類名。型別為 string,預設值為空陣列。當然,若只有乙個異常類時,可以不使用陣列。

需要注意的是,@transactional 若用在方法上,只能用於 public 方法上。對於其他非 public 方法,如果加上了註解 @transactional,雖然 spring 不會報錯,但不會將指定事務織入到該方法中。因為 spring 會忽略掉所有非 public 方法上的 @transaction 註解。

若 @transaction 註解在類上,則表示該類上所有的方法均將在執行時織入事務。

涉及到資料庫的操作就是@transaction(readonly==false)

@transactional

@service(value = "tbcontentcategoryservice")

public class tbcontentcategoryserviceimpl implements tbcontentcategoryservice

}

default:採用 db 預設的事務隔離級別。mysql 預設為 repeatable_read;oracle 預設為:read_committed;

read_uncommitted:讀未提交。未解決任何併發問題。

read_committed:讀已提交。解決髒讀,存在不可重複讀與幻讀。

repeatable_read:可重複讀。解決髒讀、不可重複讀。存在幻讀。

serializable:序列化。不存在併發問題。

所謂事務傳播行為是指,處於不同事務中的方法在相互呼叫時,執行期間事務的維護情況。如,a 事務中的方法 a() 呼叫 b 事務中的方法 b(),在呼叫執行期間事務的維護情況,就稱為事務傳播行為。事務傳播行為是加在方法上的。

required:指定的方法必須在事務內執行。若當前存在事務,就加入到當前事務中;若當前沒有事務,則建立乙個新事務。這種傳播行為是最常見的選擇,也是 spring 預設的事務傳播行為。

supports:指定的方法支援當前事務,但若當前沒有事務,也可以以非事務方式執行。

mandatory:指定的方法必須在當前事務內執行,若當前沒有事務,則直接丟擲異常。

requires_new:總是新建乙個事務,若當前存在事務,就將當前事務掛起,直到新事務執行完畢。

not_supported:指定的方法不能在事務環境中執行,若當前存在事務,就將當前事務掛起。

never:指定的方法不能在事務環境下執行,若當前存在事務,就直接丟擲異常。

nested:指定的方法必須在事務內執行。若當前存在事務,則在巢狀事務內執行;若當前沒有事務,則建立乙個新事務。

spring事務實現原理

如果你用過spring aop,那麼理解註解事務就十分簡單了。事務註解本質上實在事務方法加入乙個around切面,在方法開始前開始事務,在丟擲異常後回滾事務。使用簡單偽 可以簡單理解為 dowithtransaction catch exception ex spring transaction有各...

Spring整合Ibatis事務實現

最近看 spring實戰 的書,每看一章寫乙個簡單的例子記錄一下,這次是spring事務實現,我在spring配置文件裡面通過spring的aop切面程式設計,給業務邏輯的所有方法配置了事務,使用預設的隔離和傳播機制,具體是什麼機制後續作答。然後測試業務邏輯方法如果遇到執行期異常是否會回滾sql語句...

Javaweb 事務實現

為什麼需要事務 需要 有一張銀行賬戶表,a使用者給b使用者轉賬 a賬戶減少,b賬戶增加,但是a操作完之後斷電了?解決方案 a減少錢,但是不要立即修改資料表,b收到錢之後,同時修改資料表 什麼是事務 事務 transaction,一串行要發生的連續的操作。事務的特點 連續的操作要麼全部成功,要麼全部失...