Spring中 Transaction管理
配置有两种方式:
@Transactional <tx:method />
Note:
以下所有讨论,都是用 @Transactional
方式来 开启Transaction支持
。
mehtod
需要配置注解 @Transactional
? method
没有配置注解 @Transactional
, 难道 sql操作
就不会被 commit
?
配置 @Transactional
的目的就是手动开启事务,保证 method
中一系列 sql操作
包含在同一事务中,从保证数据的完整性(回滚或提交)与读写安全(隔离级别);
DataSource
的 缺省
配置: defaultAutoCommit=true;
即:
如果 method
不配置 @Transactional
,则每执行一个 SQL操作,如果成功, 默认开启的事务
就会 立即
向数据库自动 commit
,而不能 rollback
;
数据库的完整性
,保证成批的 SQL 语句要么全部 commit
,要么全部 rollback
。通常包含以下 两种
方式: BEGIN
, ROLLBACK
, COMMIT
来实现,显式地开启并控制一个 Transaction
。 SET AUTOCOMMIT=0
,用来 禁止
当前会话自动 commit
。
method
上配置注解 @Transactional
,就是使用 第一种
方式来实现 Transaction管理
(
基于 SpringAOP
实现 方法增强
,这里表现为 TransactionAspectSupport
)
。