Spring学习笔记6,Spring提供的事务控制支持

版权声明:本博客的所有内容,包括文字、图片,均为本人原创。转载请附上来源。 https://blog.csdn.net/weixin_37659242/article/details/80115973

spring提供了三个对象对事务控制统一管理:

1、PlatformTransactionManager 事务管理器(统一接口)
commit 提交事务
rollback 回滚事务
根据持久层框架选择具体事务管理器实现类:
org.springframework.orm.hibernate5.HibernateTransactionManager

2、TransactionDefinition 事务定义(静态配置信息)
getIsolationLevel 获取事务隔离级别
getName 获取事务名称
getPropagationBehavior 获取事务传播行为
getTimeout 返回事务超时时间
isReadOnly 判断当前事务,是否为只读 (事务是只读的,不能进行修改操作 )

事务定义信息包括: 事务隔离级别(可以使用数据库默认)、事务传播行为(手工定义)、事务超时时间(可以使用数据库默认)

了解传播行为:
当service方法调用 另外一个service方法时候,模拟两个方法,A和B,spring提供传播行为定义事务:
1、PROPAGATION_REQUIRED 支持当前事务,如果不存在就新建一个
A方法要进行事务控制,当A调用B时候,由于B方法也要进行事务控制,并且A和B要在一个事务中。
如果A开启了一个事务,当A调用B时候,B由于设置传播 行为PROPAGATION_REQUIRED,判断当前有没有事务,如果有事务使用这一个事务,如果没有事务,我再新开启一个事务,保证A和B在一个事务中。
重点:用于A和B都是增、删、改
2、PROPAGATION_SUPPORTS支持当前事务,,如果不存在,不用事务
重点:用于
A为增、删、改,A开启一个事务
B为查询,不需要事务,B设置传播行为PROPAGATION_SUPPORTS

3、TransactionStatus 事务状态(事务执行过程中动态信息)
flush():事务已经被刷出 (flush和commit 不是一个概念)
hasSavepoint() :判断是否有保存点
isCompleted : 事务是否完成
isNewTransaction : 是否为新建事务
isRollbackOnly: 判断事务是否标记为回滚 (代码执行rollback 称为标记回滚,事务还需要提交)
setRollbackOnly :设置标记状态

猜你喜欢

转载自blog.csdn.net/weixin_37659242/article/details/80115973
今日推荐