面试题 | 您所在的位置:网站首页 › spring事务传播属性和隔离级别 › 面试题 |
事务的原理:spring的事务有两种,编程式和声明式,编程式是手动的去调用相关api 控制事务的开始,回滚,提交等操作,我们一般使用声明式,在某方法上添加@tranactional注解,这样sql就会统一提交或失败,原理就是加上这个@transactional,spring会基于这个类生成一个代理对象作为bean,使用bean的方法,查看方法上面是否含有这个注解,如果有就把自动提交改为false,有异常就回滚,没有就提交 事务的四大特性:ACID 原子性,隔离性,持久性,一致性 举个简单的例子来描述事物的四大特性。 现在A和B每个人有100块钱,现在模拟一个转载业务,A向B转账50块钱 原子性:要么转账成功,要么转账失败,A要不有100 B有100,A要不有50 B有150 隔离性:A向B转账的时候,其他人是不能给B转账的,只能等他们操作完才能别人才能向他们转账 持久性:A向B转过的前,在不进行其他操作的情况下,B的钱会一直存在 一致性:A和B的钱 加起来一共200元,不论谁给谁转都是200 事务的传播特性:多个事务之间相互调用时 他们之间如何进行传播和交互的规则。 required:有事务加入,没有事务就创建一个,必须在事务上进行 required_new:存在事务就暂停当前事务,不存在就创建一个新的 suport:有事务就加入,没有事务就以没有事务的方式进行 not_suport:以非事务的方式进行,如果有就挂起,直到执行完,再回复 never:要求没有事务,如果存在就抛异常 mandatory:要求当前存在事务 没有则抛异常 nested:如果存在事务就嵌入事务内执行 事务的隔离级别:多个并发事务之间的相互影响层度和可见性的规定 读未提交:读到啦未提交的事务,最低的隔离级别,可能产生脏读 读已提交:读到了 已经提交的,不可重复读 和幻读 可重复读:保证自己读的时候 堵塞别人的操作,可能产生幻读 串行化:避免了脏读幻读不可重复度,但是性能降低 幻读:幻读是指在并发事务中,一个事务在读取某个范围内的数据时,另一个事务在该范围内插入了新的数据,导致第一个事务再次读取该范围时发现存在新插入的数据,就好像出现了幻觉一样 脏读:脏读是指一个事务在读取了另一个事务未提交的数据时,导致读取到的数据是不一致或不正确的 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |