当前位置:首页 > 面试题 > 正文内容

spring的4种事务特性,5种隔离级别,7种传播行为

关中浪子3年前 (2021-07-21)面试题1163
买泛域名SSL证书 送5斤装现摘猕猴桃一箱、同时提供技开源商城搭建免费技术支持。
泛域名ssl证书 239元1年送1个月、单域名39元1年,Sectigo(原Comodo证书)全球可信证书,强大的兼容性,高度安全性,如有问题7天内可退、可开发票
加微信VX 18718058521 备注SSL证书
【腾讯云】2核2G4M云服务器新老同享99元/年,续费同价

spring事务:
什么是事务:
事务逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败.


 

事务特性(4种):
原子性 (atomicity):强调事务的不可分割.
一致性 (consistency):事务的执行的前后数据的完整性保持一致.
隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰
持久性(durability) :事务一旦结束,数据就持久到数据库


 

如果不考虑隔离性引发安全性问题:
脏读 :一个事务读到了另一个事务的未提交的数据
不可重复读 :一个事务读到了另一个事务已经提交的 update 的数据导致多次查询结果不一致.
虚幻读 :一个事务读到了另一个事务已经提交的 insert 的数据导致多次查询结果不一致.


 

解决读问题: 设置事务隔离级别(5种)
DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.
未提交读(read uncommited) :脏读,不可重复读,虚读都有可能发生
已提交读 (read commited):避免脏读。但是不可重复读和虚读有可能发生
可重复读 (repeatable read) :避免脏读和不可重复读.但是虚读有可能发生.
串行化的 (serializable) :避免以上所有读问题.
Mysql 默认:可重复读
Oracle 默认:读已提交


read uncommited:是最低的事务隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。
read commited:保证一个事物提交后才能被另外一个事务读取。另外一个事务不能读取该事物未提交的数据。
repeatable read:这种事务隔离级别可以防止脏读,不可重复读。但是可能会出现幻象读。它除了保证一个事务不能被另外一个事务读取未提交的数据之外还避免了以下情况产生(不可重复读)。
serializable:这是花费最高代价但最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读之外,还避免了幻象读(避免三种)。


事务的传播行为


propagion_XXX :事务的传播行为


* 保证同一个事务中
propagion_required: 支持当前事务,如果不存在 就新建一个(默认)
propagion_supports: 支持当前事务,如果不存在,就不使用事务
propagion_mandatory: 支持当前事务,如果不存在,抛出异常


* 保证没有在同一个事务中
propagion_requires_new:  如果有事务存在,挂起当前事务,创建一个新的事务
propagion_not_supported: 以非事务方式运行,如果有事务存在,挂起当前事务
propagion_never: 以非事务方式运行,如果有事务存在,抛出异常
propagion_nested: 如果当前事务存在,则嵌套事务执行


找梯子最重要的就是稳定,这个已经上线三年了,一直稳定没有被封过,赶紧下载备用吧!

扫描二维码推送至手机访问。

版权声明:本文由码农翻生发布,如需转载请注明出处。

本文链接:https://lubojian.cn/post/35.html

分享给朋友:

相关文章

2023 java 基础面试题

Q1:Java内部类和子类之间有什么区别?答案:内部类是指在一个外部类的内部再定义一个类,内部类对外部类有访问权限,可以访问类中定义的所有变量和方法。子类是从父类(superclass)中继承的类,子类可以访问父类所有public和prot...

JAVA面试题附答案(长期更新)

JAVA基础基本类型分为数值型(byte,short,int,long,float,double),字符型,布尔型引用类型包含类,接口,数组String能被继承吗?为什么?不可以,因为String类有final修饰符,而final修饰的类是...

Java笔试题大全带答案,2023年精选解答

1. 下面关于java.lang.Exception类的说法正确的是()A 继承自Throwable B Serialable CD 不记得,反正不正确答案:A解析:Java异常的基类为java.lang.Throwable,java.la...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。