目录
1.Spring事务
在数据层或业务层保障一系列的数据库操作同成功同失败。
2.事务的特点(ACID)
原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全 部完成,要么完全不起作用。
一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处 于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被 破坏。
隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔 离开来,防止数据损坏。
持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这 样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久 化存储器中。
3.事务操作
1)事务添加到Service层接口
2)在Spring进行事务管理操作,有两种方式:编程式事务管理和声明式事务管理
3)声明式事务管理:(1)基于注解方式(2)基于 xml 配置文件方式
4)在Spring进行声明式事务管理,底层使用 AOP 原理
5)Spring事务管理 API
4.操作实例
【第一步】在业务层接口上添加Spring事务管理
@Transactional
public interface BookService {
【第二步】设置事务管理器(将事务管理器添加到IOC容器中)
【第三步】开启注解式事务驱动
5.事务的传播行为(7个)
(1)REQUIRED(默认):指定的方法必须在事务内执行。若当前存在事务,就加入当前事务中;若当前没有事务,则创建一个新事务。这种创博行为时最常见的选择,
(2)REQUIRES_NEW:总是新建一个事务,若当前存在事务,就将当前事务挂起,知道新事物执行完毕。
(3)SUPPORTS:指定方法支持当前事务,但若当前没有事务,也可以以非事务的方式执行。
(4)MANDATORY
(5)NESTED
(6)NEVER
(7)NOT_SUPPORTED
6.事务配置
上面这些属性都可以在@Transactional
注解的参数上进行设置。
readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true。
timeout:设置超时时间单位秒,在多长时间之内事务没有提交成功就自动回滚,-1表示不设置超时时间。
rollbackFor:当出现指定异常进行事务回滚
noRollbackFor:当出现指定异常不进行事务回滚