一、事務的簡介:
基本概念:
所謂的事務是用戶定義的一個數據庫操作序列,這些操作要麼全做,要麼全不做,是一個不可分割的工作單位。事務與程序是兩個不同的概念,一般來說一個程序中包含多個事務。
Sql中定義事務一般有三條:
- begin Transaction
- commit:提交,即提交事務的所有操作。
- rollback:回滾,即事務運行過程中遇到了故障,事務不能繼續執行,系統將之前的操作全部撤銷,回滾到事務開始時的狀態。
ACID
- Atomicity–原子性:事務中的操作要麼都做,要麼都不做
- Consistency–一致性:事務的運行必須從一個狀態轉變到另一個狀態。與原子性密切相關,
- Isolation–隔離性:一個事務的運行不能被其他事務干擾
- Durability–持久性:也稱永久性,指一個事務一旦提交,它對數據庫中的改變就應該是永久性的。
二、spring中事務的管理
(一)Spring 支持兩種類型的事務管理:
編程式事務管理 :在編程的幫助下有管理事務,比較靈活,但卻很難維護。
聲明式事務管理 :從業務代碼中分離事務管理,使用註釋或 XML 配置來管理事務。
聲明式事務管理比編程式事務管理更可取,儘管它不如編程式事務管理靈活,但它允許你通過代碼控制事務。但作爲一種橫切關注點,聲明式事務管理可以使用 AOP 方法進行模塊化。Spring 支持使用 Spring AOP 框架的聲明式事務管理。
(二)編程式事務管理
- Spring提供事務模板類:org.springframework.transaction.support.TrancationTemplate
- 事務管理器:org.springframework.jdbcdatasource.DatasourceTrancationManager