spring的事務管理

2021-08-04 09:31:35 字數 1574 閱讀 4084

spring的事務管理

1:spring支援程式設計式事務管理和宣告式事務管理兩種;

程式設計式事務管理往往借助spring中的transactiontemplate;宣告式事務管理是建立在aop的基礎上;其本質是建立在方法的攔截上,

然後在目標方法開始之前建立或者加入乙個事務;在執行完後提交事務或者回滾事務;宣告式事務管理不需要程式設計的方式編寫大量的**

管理實務,只需要配置檔案或者是註解@transactional,便可以將業務邏輯加入到事務中去。

宣告式事務管理也有兩種方式:一種是tx標籤進行方法的攔截和aop的方式定義切面這種是xml配置檔案的方式

另一種就是基於@transactional註解的方式

spring事務管理都是基於transactionmanager這個介面實現的

2:spring事務管理往往牽扯到事務的隔離級別和傳播機制

(1):spring 的隔離級別分為五種

isolaction_default:這種是和資料庫預設的隔離級別一致;通常這種預設的隔離級別就是isolaction_read_commited

isolaction_read_uncommited k可以讀取未提交的資料 容易髒讀

isolaction_read_commited  只能讀取提交的資料  避免髒讀

isolaction_repeatable_read  可以讀取多次重複查詢的資料  避免髒讀 不可重複讀

isolaction_serializable 所有的事務都是逐一執行 事物之間完全沒有影響 避免髒讀不可重複讀 幻讀  但是嚴重影響程式的效能

3:spring的 傳播機制

所謂事務的傳播行為是指,如果在開始當前事務之前,乙個事務上下文已經存在,此時有若干選項可以指定乙個事務性方法的執行行為。

在transactiondefinition定義中包括了如下幾個表示傳播行為的常量:

transactiondefinition.propagation_required:如果當前存在事務,則加入該事務;如果當前沒有事務,則建立乙個新的事務。這是預設值。

transactiondefinition.propagation_requires_new:建立乙個新的事務,如果當前存在事務,則把當前事務掛起。

transactiondefinition.propagation_supports:如果當前存在事務,則加入該事務;如果當前沒有事務,則以非事務的方式繼續執行。

transactiondefinition.propagation_not_supported:以非事務方式執行,如果當前存在事務,則把當前事務掛起。

transactiondefinition.propagation_never:以非事務方式執行,如果當前存在事務,則丟擲異常。

transactiondefinition.propagation_mandatory:如果當前存在事務,則加入該事務;如果當前沒有事務,則丟擲異常。

transactiondefinition.propagation_nested:如果當前存在事務,則建立乙個事務作為當前事務的巢狀事務來執行;

如果當前沒有事務,則該取值等價於transactiondefinition.propagation_required。

Spring事務管理

spring是ssh中的管理員,負責管理其它框架,協調各個部分的工作。今天一起學習一下spring的事務管理。spring的事務管理分為宣告式跟程式設計式。宣告式就是在spring的配置檔案中進行相關配置 程式設計式就是用註解的方式寫到 裡。下面先說宣告式 spring配置檔案中關於事務配置總是由三...

spring事務管理

一 xml配置事務 二 註解的方式配置事務 bean id txmanaager class org.springframework.orm.hibernate3.hibernatetransactionmanager property name sessionfactory ref session...

spring 事務管理

和資料庫打交道的碼農都知道事務,事務有4大特徵,分別是原子性,一致性,隔離性,永續性。而spring 對事物提供了良好的支援,和api,通過簡單的配置,則可以減低程式設計師重複的操作。1.原子性 原子性指的是乙個事務內的所有操作要麼全部應用到資料庫,要麼取消對資料庫的操作。2.一致性 一致性和原子性...