面试题 您所在的位置:网站首页 spring事务传播属性和隔离级别 面试题

面试题

2023-07-08 23:41| 来源: 网络整理| 查看: 265

事务的原理: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 实验室设备网 版权所有