百度收录网站方法,网站引导页的作用,建网站跟建网店的区别,深圳白狐工业设计公司1.#x1f31f;Spring事务
1.编程式事务
事务管理代码嵌入嵌入到业务代码中#xff0c;来控制事务的提交和回滚#xff0c;例如TransactionManager
2.声明式事务
使用aop对方法前后进行拦截#xff0c;然后在目标方法开始之前创建或者加入一个事务#xff0c;执行完目…1.Spring事务
1.编程式事务
事务管理代码嵌入嵌入到业务代码中来控制事务的提交和回滚例如TransactionManager
2.声明式事务
使用aop对方法前后进行拦截然后在目标方法开始之前创建或者加入一个事务执行完目标方法之后根据执行的情况提交或者回滚
3.事务传播行为7种
Spring事务传播行为是Spring框架中的一种事务管理方式
当事务方法被另外一个事务方法调用时必须指定事务应该如何传播
1.PROPAGATION_REQUIRED(默认)
如果当前存在事务则加入该事务如果当前没有事务则创建一个新的事务
2.PROPAGATION_REQUIRES_NEW
创建一个新的事务如果当前存在事务则把当前事务挂起
3.PROPAGATION_NESTED
如果当前存在事务就在当前事务内执行否则就执行与 PROPAGATION_REQUIRED 类似的操作
4.PROPAGATION_SUPPORTS
如果当前存在事务则加入该事务如果当前没有事务则以非事务的方式继续运行
5.PROPAGATION_NOT_SUPPORTED
以非事务方式运行如果当前存在事务则把当前事务挂起
6.PROPAGATION_MANDATORY
如果当前存在事务则加入该事务如果当前没有事务则抛出异常
7.PROPAGATION_NEVER
以非事务方式运行如果当前存在事务则抛出异常
4.Spring事务隔离级别
Spring的事务隔离级别是用于控制事务并发访问数据库时的行为 ISOLATION_DEFAULT使用数据库默认的隔离级别MySql 默认采用的是 REPEATABLE_READ也就是可重复读。 ISOLATION_READ_UNCOMMITTED(读未提交)最低的隔离级别可能会出现脏读、幻读或者不可重复读。 ISOLATION_READ_COMMITTED(读已提交)允许读取并发事务提交的数据可以防止脏读但幻读和不可重复读仍然有可能发生。 ISOLATION_REPEATABLE_READ(可重复读)对同一字段的多次读取结果都是一致的除非数据是被自身事务所修改的可以阻止脏读和不可重复读但幻读仍有可能发生。 ISOLATION_SERIALIZABLE(序列化)最高的隔离级别虽然可以阻止脏读、幻读和不可重复读但会严重影响程序性能
5.事务隔离性问题
1. 脏读 读了未提交的的数据 例如T1、T2俩事务T1读了T2T2回滚
2. 不可重复读 读了修改前后的数据
3. 幻读 读了插入或删除前后的数据
6.事务四大特性(ACID) 原子性 (atomicity:强调事务的不可分割. 事务是数据库的逻辑工作单位事务中包含的各操作要么都做要么都不做 一致性 consistency:事务的执行的前后数据的完整性保持一致. 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时就说数据库处于一致性状态。如果数 据库系统 运行中发生故障有些事务尚未完成就被迫中断这些未完成事务对数据库所做的修改有一部分已写入物理数据库这时数据库就处于一种不正确的 状态或者说是 不一致的状态。 隔离性 isolation:一个事务执行的过程中,不应该受到其他事务的干扰 一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的并发执行的各个事务之间不能互相干扰。 持续性 durability :事务一旦结束,数据就持久到数据库 事务一旦提交它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
7.事务失效场景 作用于非public方法上 数据库不支持事务 同个类中的调用被transaction修饰的方法会失效因为只有当事务方法被当前类以外的代码调用才会由spring生成的代理对象来管理 未背Spring进行管理 方法被final修饰代理类中就无法重写该方法添加事务功能
8.事务超时时间
一个事务所允许执行的最长时间如果在超时时间内还没有完成的话就自动回滚