百度如何验证网站,网站开发入什么科目,有哪些搜索引擎网站,网站前端切页面时间事务 是一组操作的集合#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体#xff0c;一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功#xff0c;要么同时失败。
1. 事务管理
怎么样来控制这组操作#xff0c;让这组操作同时成功或…事务 是一组操作的集合它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功要么同时失败。
1. 事务管理
怎么样来控制这组操作让这组操作同时成功或同时失败呢此时就要涉及到事务的具体操作了。
事务的操作主要有三步 开启事务一组操作开始前开启事务start transaction / begin ; 提交事务这组操作全部成功后提交事务commit ; 回滚事务中间任何一个操作出现异常回滚事务rollback ;
1.1 Spring事务管理
在方法运行之前开启事务如果方法成功执行就提交事务如果方法执行的过程当中出现异常了就回滚事务。
在一般开发中 一旦我们要进行控制事务都是这样的套路
所以在spring框架当中就已经把事务控制的代码都已经封装好了并不需要我们手动实现。使用了spring框架只需要通过一个简单的注解Transactional就搞定了。 1.1.1 Transactional注解 Transactional作用就是在当前这个方法执行开始之前来开启事务方法执行完毕之后提交事务。如果在这个方法执行的过程当中出现了异常就会进行事务的回滚操作。 Transactional注解我们一般会在业务层当中来控制事务因为在业务层当中一个业务功能可能会包含多个数据访问的操作。在业务层来控制事务我们就可以将多个数据访问操作控制在一个事务范围内。 Transactional注解书写位置 方法 当前方法交给spring进行事务管理 类 当前类中所有的方法都交由spring进行事务管理 接口 接口下所有的实现类当中所有的方法都交给spring 进行事务管理
可以在application.yml配置文件中开启事务管理日志这样就可以在控制看到和事务相关的日志信息了
#spring事务管理日志
logging:level:org.springframework.jdbc.support.JdbcTransactionManager: debug 1.2 事务进阶
主要介绍Transactional注解当中的两个常见的属性 异常回滚的属性rollbackFor 事务传播行为propagation
1.2.1 rollbackFor
一般在方法上添加了Transactional注解来实现事务管理。
出现异常之后由于在方法上加了Transactional注解进行事务管理所以发生异常会执行rollback回滚操作从而保证事务操作前后数据是一致的 默认情况下只有出现RuntimeException(运行时异常)才会回滚事务。
如果还需要回滚指定类型的异常可以通过rollbackFor属性来指定。
1.2.2 propagation
Transactional注解当中的第二个属性propagation这个属性是用来配置事务的传播行为的。
什么是事务的传播行为呢 就是当一个事务方法被另一个事务方法调用时这个事务方法应该如何进行事务控制。
例如两个事务方法一个A方法一个B方法。在这两个方法上都添加了Transactional注解就代表这两个方法都具有事务而在A方法当中又去调用了B方法。
属性值含义REQUIRED【默认值】需要事务有则加入无则创建新事务REQUIRES_NEW需要新事务无论有无总是创建新事务SUPPORTS支持事务有则加入无则在无事务状态中运行NOT_SUPPORTED不支持事务在无事务状态下运行,如果当前存在已有事务,则挂起当前事务MANDATORY必须有事务否则抛异常NEVER必须没事务否则抛异常
对于这些事务传播行为工作上遇到以下两个 REQUIRED默认值大部分情况下都是用该传播行为即可。 REQUIRES_NEW 当我们不希望事务之间相互影响时可以使用该传播行为。比如下订单前需要记录日志不论订单保存成功与否都需要保证日志记录能够记录成功。直白点就是不论是否有事务都创建新事务 运行在一个独立的事务中。