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.一致性 一致性和原子性...