博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 事务面试_java中关于java事务的面试要点
阅读量:6691 次
发布时间:2019-06-25

本文共 1143 字,大约阅读时间需要 3 分钟。

一、事务引发的问题

1、dirty reads 脏读

一个事务正在对数据进行更新操作,但是更新还未提交,另一个事务这时也来操作这组数据,并且读取了前一个事务还未提交的数据,而前一个事务如果操作失败进行了回滚,后一个事务读取的就是错误的数据,这样就造成了脏读

2、不可重复读

一个事务多次读取同一个数据,在该事务还未结束时,另一个事务也对该数据进行了操作,而且在第一个事务两次读取之间,第二个事务对数据进行了更新,那么第一个事务前后两个读取到的数据是不同的,这样就造成了不可重复读

3、幻读

第一个数据正在查询某一条数据,这时,另一个事务又插入了一条符合条件的数据,第一个事务在第二次查询符合同一条件的数据时,发现多了一条前一次查询时没有的数据,仿佛幻觉一样,这就是幻读

4、**不可重复读和幻读的区别

不可重复读是指在同一查询事务中多次进行,由于其他提交事务所做的修改和删除,每次返回不同的结果集,此时发生不可重复读

幻读是指在同一查询事务中多次进行,由于其他提交的事务所做的插入操作,每次返回不同的结果集,此时发生幻读

表面上看,区别就在于不可重复读能看见其他事务提交的修改和删除,而幻读能看见其他事务提交的插入

二、spring 事务隔离级别

1、default:(默认)

默认隔离级别,使用数据库默认的事务隔离级别

2、read_uncommitted:(读未提交)

这是事务最低的隔离级别,他允许另外一个事务可以看到这个事务未提交的数据,这种隔离级别会产生脏读,不可重复读和幻读

3、read_committed(读已提交)

保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据.这种事务隔离级别可以避免脏读,但是可能会出现不可重复读和幻读

4、repeatable_read(可重复读)

这种事务级别可以防止脏读,不可重复读.但是可能出现幻读.他除了保证一个事务不能读取另一个事务未提交的数据外,还保证了不可重复读

5、Serializable 串行化

这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。防止了脏读、不可重复读、幻读

三、事务的传播行为

1、requierd

如果有事务那么加入事务,没有的话新建一个

2、not_supported

不开启事务

3、requires_new

不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完,继续执行老事务

4、mandatory

必须在一个已有的事务中执行,否则抛出异常

5、never

必须在一个没有的事务中执行,否则抛出异常

6、supports

如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务那就不用事务

转载地址:http://ktdoo.baihongyu.com/

你可能感兴趣的文章
Maven下载慢的解决方案
查看>>
我的友情链接
查看>>
Android 核心分析 之七------Service深入分析
查看>>
Regsvr32使用方法
查看>>
柱形图Demo
查看>>
编辑器
查看>>
关闭windows的默认共享
查看>>
react开发环境搭建
查看>>
数据库读写分离
查看>>
社交是微信营销
查看>>
2008 R2 证书服务器应用详解
查看>>
hive 动态分区太多问题
查看>>
Windows Server 2008 RemoteApp(二)---部署激活远程桌面授权服务器
查看>>
读取日志文件开发总结
查看>>
IOS --React Native
查看>>
Linux CPU
查看>>
Linux/Centos ntp时间同步,联网情况和无网情况配置
查看>>
初级网络运维工程师比赛题目
查看>>
跨交换机实现vlan实验报告
查看>>
jquery easyui滚动条部分设置介绍
查看>>