找做网站的朋友,如何让wordpress百度霸屏,wordpress编辑器 模板,wordpress怎么使用cdn加载图片一、事务
1、事务的介绍 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行#xff0c;要么完全地都不执行#xff0c; 它是一个不可分割的工作执行单元。 2、事务的使用场景 例如在日常生活中#xff0c;有时我们需要进行银行转账#xff0c;这个银行转…一、事务
1、事务的介绍 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行要么完全地都不执行 它是一个不可分割的工作执行单元。 2、事务的使用场景 例如在日常生活中有时我们需要进行银行转账这个银行转账操作背后就是需要执行多个SQL语句假如这些SQL执行到一半突然停电了那么就会导致这个功能只完成了一半这种情况是不允许出现的要想解决这个问题就需要通过事务来完成。
二、事务的四大特性 原子性Atomicity 要么都执行要么都不执行 一致性Consistency 事务前后的数据都是正确的 隔离性Isolation 事物之间相互隔离互不干扰并发执行的事务彼此无法看到对方的中间状态 持久性Durability 事务一旦提交不可再回滚 三、Spring中事务控制的API
PlatformTransactionManager接口是spring的事务管理器它里面提供了我们常用的操作事务的方法
public interface PlatformTransactionManager { //开启事务 TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException; //提交事务void commit(TransactionStatus status) throws TransactionException; //回滚事务void rollback(TransactionStatus status) throws TransactionException;
}
TransactionDefinition接口 定义事务的属性
//传播行为int getPropagationBehavior();//隔离级别int getIsolationLevel();//事务超时int getTimeout();//是否只读boolean isReadOnly();四、事务的隔离级别
隔离级别是否脏读是否不可重复度是否幻读ISOLATION_DEFAULTxx√ISOLATION_READ_UNCOMMITTED√√√ISOLATION_READ_COMMITTEDx√√ISOLATION_REPEATABLE_READxx√ISOLATION_SERIALIZABLExxx
问题描述隔离级别脏读一个事务读取到另一个事务还未提交的数据read-commited不可重复读一个事务内多次读取一行数据的内容其结果不一致repeatable-read幻读一个事务内多次读取一张表中的内容其结果不一致serialized-read 五、事务的传播行为
事务传播行为propagation behavior指的就是当一个事务方法被另一个事务方法调用时这个事务方法应该如何进行。methodA事务方法调用methodB事务方法时methodB是继续在调用者methodA的事务中运行呢还是为自己开启一个新事务运行这就是由methodB的事务传播行为决定的。
Spring中事务的七种传播行为
事务传播行为类型说明PROPAGATION_REQUIRED如果当前没有事务就新建一个事务如果已经存在一个事务中加入到这个事务中。这是最常见的选择。PROPAGATION_SUPPORTS支持当前事务如果当前没有事务就以非事务方式执行。PROPAGATION_MANDATORY使用当前的事务如果当前没有事务就抛出异常。PROPAGATION_REQUIRES_NEW无论当前是否存在事务都新建事务如果当前存在事务把当前事务挂起。新事务结束后再恢复旧事务。PROPAGATION_NOT_SUPPORTED以非事务方式执行操作如果存在事务则暂停该事务直到方法执行完毕。PROPAGATION_NEVER以非事务方式执行如果当前存在事务则抛出异常。PROPAGATION_NESTED如果当前存在事务则在嵌套事务内执行即子事务。如果当前没有事务则其行为如同PROPAGATION_REQUIRED会新建一个事务。 1是默认的事务传播行为加入事务要么全部回滚要么全部执行
4中如果原来的事务中发生异常新建事务没有异常原来的事务会回滚新建事务会执行
7是嵌套在事务内执行也是要么回滚要么全部执行只不过和1的执行方式不同
六、事务的回滚规则
rollbackOn 回滚规则可省略或设置 rollbackOnException 可省略运行时异常回滚编译时异常不回滚 如果事务中抛出 RuntimeException,则自动回滚 如果事务中抛出 CheckException不会自动回滚