資料庫事務(database transaction)是指作為單個邏輯工作單元執行的一系列操作,要麼完全的執行,要麼完全的不執行。
事務的特點:
1.原子性:指事務是乙個不可分割的工作單位 ,事務中操作要麼都發生,要麼都不發生
2.一致性:指的是事務前後資料的完整性必須保持一致
3.隔離性:指多個使用者併發訪問資料庫時,乙個使用者的事務不能被其他使用者的事務所干擾,多個併發事務之間資料要相互隔離。
4.永續性: 指乙個事務一旦提交,它對資料庫中的資料的改變是永久性,即時資料庫發生故障不應該對它有影響
spring對於事務的管理分為兩種:
程式設計式事務
通過編寫**來管理事務,類似於jdbc裡面的通過**來對事務進行提交或者回滾。
優點:事務最細力度可以做到**塊級別。
缺點:會汙染業務**。
宣告式事務
通過使用xml配置檔案或者註解的方式來管理事務,無需編寫**,原理是使用aop進行事務的管理。
優點:不會汙染業務**,通過配置檔案或註解即可完成事務的管理
缺點:事務最細力度只能做到方法級別。
<
!--配置事務管理器--
>
"transactionmanager"
class
="org.springframework.jdbc.datasource.datasourcetransactionmanager"
>
"datasource" ref=
"c3p0"
/>
<
/bean>
配置的形式實現事務
-->
<
!--配置事務處理--
>
"txadvice" transaction-manager=
"transactionmanager"
>
<
!--name: service中要進行事物新增的方法名,可用萬用字元*
propagation: 事物的傳播行為
isolation:事務隔離級別定義;預設為「default」 --
>
"*"/
>
<
/tx:attributes>
<
/tx:advice>
(3)配置aop讓事務生效--
>
"point" expression=
"execution(* cn.gok.services.userservise.*(..))"
/>
"txadvice" pointcut-ref=
"point"
/>
<
/aop:config>
service
public
inte***ce
userservise
serviceimpl
@transactional
(norollbackfor =
)//事務註解 norollbackfor:遇到該異常不做回滾
@override
public
boolean
sendmoney
(string userid, string otherid, double money)
return
false
;}
@transactional中的屬性如下:
propagation :用於設定事務傳播屬性。該屬性型別為 propagation 列舉,預設值為propagation.required。
isolation : 用於設定事務的隔離級別。該屬性型別為 isolation 列舉,預設值為isolation.default。
readonly:用於設定該方法對資料庫的操作是否是唯讀的。該屬性為 boolean,預設值為 false。
timeout:用於設定本操作與資料庫連線的超時時限。單位為秒,型別為 int,預設值為-1,即沒有時限。
rollbackfor:指定需要回滾的異常類。型別為 class,預設值為空陣列。當然,若只有乙個異常類時,可以不使用陣列。
rollbackforclassname: 指定需要回滾的異常類類名。型別為 string,預設值為空陣列。當然,若只有乙個異常類時,可以不使用陣列。
norollbackfor:指定不需要回滾的異常類。型別為 class,預設值為空陣列。當然,若只有乙個異常類時,可以不使用陣列。
norollbackforclassname:指定不需要回滾的異常類類名。型別為 string,預設值為空陣列。當然,若只有乙個異常類時,可以不使用陣列。
併發問題:
spring實現事務隔離
這些常量均是以 isolation開頭。例如 isolationrepeat able_read。
default:採用 db 預設的事務隔離級別。mysql 的預設為 repeatableread;oracle預設為 readcommitted。
read_uncommitted:讀未提交。未解決任何問題。
read_committed:讀已提交。解決髒讀,存在不可重複讀與幻讀。
repeatable_read:可重複讀。解決髒讀、不可重複讀,存在幻讀
serializable:序列化。解決髒讀、不可重複讀,幻讀的問題,效率低。
@transaction預設情況下runtimeexception異常觸發事務回滾
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.一致性 一致性和原子性...