spring_day03
二.事務特性:acid
//事務隔離性併發:髒讀、幻讀、不可重複讀
事務隔離級別:1、2、4、8 1:讀未提交 2:讀已提交 4:可重複讀 8:序列化
spring封裝了事務管理**:開啟事務、提交事務、回滾事務
在不同平台(jdbc、hibernate、mybatis)操作事務的**各不相同,所以spring提供了乙個介面(platformtransactionmanager介面),針對不同平台,提供不同的實現類(jdbctransactionmanager、hibernatetransactionmanager)
spring事務管理,核心就是transactionmanager
spring管理事務的屬性介紹:事務的隔離級別、本次事務是否唯讀、事務的傳播行為(如下)
propagation_required:支援當前事務,如果不存在,就新建乙個
propagation_supports:支援當前事務,如果不存在,就不使用事務
propagation_handatory:支援當前事務,如果不存在,丟擲異常
propagation_required_new:如果有事務存在,掛起當前事務,建立新的事務
propagation_not_supported:以非事務方式執行,如果有事務存在,掛起當前事務
propagation_never:以非事務方式執行,如果有事務存在,丟擲異常
propagation_nested:如果當前事務存在,則巢狀執行(會開新事務)
這裡測試採用extends jdbcdaosupport的自帶jdbctemplate來測試
ad.decreasemoney(from,money); int a=1/0; ad.addmoney(to,money);這樣需要事務進行管理,以免原子性出錯
spring管理事務常用的兩種方式:編碼式、aop的xml配置式(aop)、註解配置(aop)
後兩種常用
編碼式:
//public void transfer(final integer from,final integer to,final double money)
@override
public void transfer(integer from, integer to, double money)
});//execute方法:1.開啟事務2.呼叫dointransactionwithoutresult方法
//3.提交事務
xml配置式:
註解式:(將配置事務通知和配置織入改為開啟使用註解管理aop事務)
加註解的**:
//以下註解只在demo2測試使用,可以直接加到該類上設定全域性,此時若有區域性屬性差異可在區域性設定
@transactional(isolation=isolation.repeatable_read,propagation=propagation.required,readonly=false)
@override
public void transfer(integer from, integer to, double money)
spring事務的相關知識點
4 事務管理失效的情況 所謂spring事務的傳播屬性,就是定義多個事務同時存在的時候,spring應該如何處理這些事務的行為。簡單來講就是 乙個開啟事務的方法執行在另乙個開啟了事務的方法中是,當前方法是開啟乙個新的事物還是使用同乙個事務 這些屬性在transactiondefinition中定義,...
相關知識點
nweb inf uclasses uweb.xml ulib n 從httpservlet 繼承,重寫doget dopost方法 n部署web.xml n 只有乙個物件 n 第一次請求的時候被初始化,只一遍 n 初始化後先呼叫init 方法,只一遍 n 每個請求,呼叫一遍service serv...
spring 知識點梳理
1.spring預設所有管理的bean都是單例模式 懶載入,所有的bean都是交給spring容器中的map管理,生命週期與spring相同,如果使用多例模式,bean則是交給記憶體管理,生命週期與spring無關 2.ssm分層 控制層 服務層 資料層 對應的註解分別為 controller se...