Spring中 Transaction管理
配置有兩種方式:sql
@Transactional
<tx:method />
Note: 如下全部討論,都是用
@Transactional
方式來開啓Transaction支持
。數據庫
mehtod
須要配置註解 @Transactional
?method
沒有配置註解 @Transactional
, 難道 sql操做
就不會被 commit
?配置@Transactional
的目的就是手動開啓事務,保證method
中一系列sql操做
包含在同一事務中,從保證數據的完整性(回滾或提交)與讀寫安全(隔離級別);安全
DataSource
的 缺省
配置: defaultAutoCommit=true;code
即: 若是
method
不配置@Transactional
,則每執行一個 SQL操做,若是成功,默認開啓的事務
就會當即
向數據庫自動commit
,而不能rollback
;事務
數據庫的完整性
,保證成批的 SQL 語句要麼所有 commit
,要麼所有 rollback
。一般包含如下兩種
方式:
BEGIN
, ROLLBACK
, COMMIT
來實現,顯式地開啓並控制一個Transaction
。SET AUTOCOMMIT=0
,用來 禁止
當前會話自動commit
。
method
上配置註解@Transactional
,就是使用第一種
方式來實現Transaction管理
(基於SpringAOP
實現方法加強
,這裏表現爲TransactionAspectSupport
) 。it