Spring事务基础介绍
事务
- 本文只介绍声明式事务管理,即使用AOP实现,使用
@Transactional开始事务 - 事务角色
- 事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法
- 事务协调员:加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法
接口介绍
-
PlatformTransactionManager:Spring事务管理器接口-
TransactionStatus getTransaction():获取事务状态信息-
Spring 将事务的配置详细信息封装到
TransactionDefinition对象中,此方法用于获得事务状态TransactionStatus -
public interface TransactionStatus{ boolean isNewTransaction(); // 是否是新的事务 boolean hasSavepoint(); // 是否有恢复点 void setRollbackOnly(); // 设置为只回滚 boolean isRollbackOnly(); // 是否为只回滚 boolean isCompleted; // 是否已完成 }
-
-
void commit():提交事务 -
void rollback():回滚事务
-
-
TransactionDefinition:事务定义信息String getName():获取事务对象名称。int getlsolationLevel():获取事务的隔离级别。int getPropagationBehavior():获取事务的传播行为.int getTimeout():获取事务的超时时间。boolean isReadOnly():获取事务是否只读。
-
TransactionStatus:事务运行状态void flush():刷新事务boolean hasSavepoint():获取是否存在保存点boolean isCompleted():获取事务是否完成boolean isNewTransaction():获取是否是新事务boolean isRollbackOnly():获取是否回滚void setRollbackOnly():设置事务回滚
事务传播行为
-
介绍
-
当事务方法被另一个事务方法调用时,需要指定事务应该如何进行传播
-
使用
@Transactional注解开启事务后,还需要在其中增加
-
常用的事务传播行为
TransactionDefinition.PROPAGATION_REQUIRED- 若当前存在事务则加入,若没有事务则新建一个
- 默认的事务传播行为,也是最常用的
TransactionDefinition.PROPAGATION_REQUIRES_NEW- 创建新事务,若当前存在事务则将其挂起
- 不管外部方法是否开启事务,都会开启自己事务,且开启的事务相互独立互不干扰
TransactionDefinition.PROPAGATION_NESTED- 在外部方法开启事务时在内部开启新事务
- 若外部方法无事务则使用
PROPAGATION_REQUIRED

浙公网安备 33010602011771号