面试必问之spring事务

简介: 面试必问之spring事务
一,引言

最近本人参加了不少的面试,总结了每家公司必问的几点问题,分别是spring事务(高频),集合(高频),接下来和大家谈谈spring中的事务

二,主题来了,请简单介绍spring支持的常用数据库事务传播属性和事务隔离级别

事务的传播行为:一个方法在运行了一个开启事务的方法中时,当前方法是使用原来的事务还是开启一个新的事务。

事务传播的行为有传播属性指定,Spring定义了7中类传播行为,如下

其重点主要讲讲其中的两个:REQUIRED,REQUIRES_NEW。

开启事务的注解:开启事务的注解:Transactionl

REQUIRED:

如果当前方法中有事务在运行,当前这个方法就是在事务内运行,否则就启动一个新事务,并在自己的事务内运行

如100块钱,同时购买两本60块钱的书,由于是在当前事务中运行,
为了保证事务的原子性,那么两本书购买都同时失败

REQUIRES_NEW:当前方法必须启动新事务,并在它自己的事务内运行,如果有实物运行,应该将它挂起

同上,如果开启一个新的事务,那么可以允许购买一本书,另一本书失败回滚
三、事务的并发问题

假设有两个事物Transactiona,Transactionb并发执行

1,脏读

a将某条记录的AGE的值从20修改为30
b读取了a更新后的值:30
而a就行了回滚,ace恢复到了20
而b读取到的数据就是30,而且是一个无效的值

2,不可重复读

a读取了ace的值为20
b将这个ace的值修改成30
a再次读取ace的值为30,和第一次读取不一致

3,幻读

a读取了表中的一部分数据
b向表中插入了新的行
四 、事物的隔离级别

数据库系统必须具有隔离并发运行各个事务的能力,使他们不会互相影响,避免各种并发问题。

一个事务与其他事务隔离的程度称为隔离级别。sql标准中规定了多种事务的隔离级别,不同的隔离级别对应不同的干扰程度,隔离级别越高,数据一致性越好但并发性弱

1,读未提交(READ UNCOMMITTED)
  允许事务a读取事务b未提交的修改
2,读已提交(READ COMMINTTED)
  要求事务a只能读取事务b已提交的修改
3,可重复读(REPQATABLE READ)
  确保事务a可以多次从一个字段中读取到相同的值,即事务a执行期间
  禁止其他事务对该字段进行更新
4,串行化(SERIALIZABLE)
  看这个单词,像不像一个序列化
  确保事务a可以多次从一个表中读取到相同的行,在事务a中执行期间
  禁止其他事务对这个表进行添加,更新,删除操作。可以避免任何并发问题发生,
  但是性能低下

五、事务的特征

数据库事务必须具备 ACID 特征。分别表示原子性(Automic),一致性(Consistency),隔离性

(Isolation),持久性(Durability)。

由于之前做过这方面的介绍,可以参考:https://blog.csdn.net/zhenghuishengq/article/details/113749995

相关文章
|
7天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
23 2
|
15天前
|
Java 开发者 Spring
Spring高手之路24——事务类型及传播行为实战指南
本篇文章深入探讨了Spring中的事务管理,特别是事务传播行为(如REQUIRES_NEW和NESTED)的应用与区别。通过详实的示例和优化的时序图,全面解析如何在实际项目中使用这些高级事务控制技巧,以提升开发者的Spring事务管理能力。
31 1
Spring高手之路24——事务类型及传播行为实战指南
|
9天前
|
XML Java 数据库连接
Spring中的事务是如何实现的
Spring中的事务管理机制通过一系列强大的功能和灵活的配置选项,为开发者提供了高效且可靠的事务处理手段。无论是通过注解还是AOP配置,Spring都能轻松实现复杂的事务管理需求。掌握这些工具和最佳实践,能
15 3
|
1月前
|
SQL 关系型数据库 MySQL
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
尼恩,一位40岁的资深架构师,通过其丰富的经验和深厚的技術功底,为众多读者提供了宝贵的面试指导和技术分享。在他的读者交流群中,许多小伙伴获得了来自一线互联网企业的面试机会,并成功应对了诸如事务ACID特性实现、MVCC等相关面试题。尼恩特别整理了这些常见面试题的系统化解答,形成了《MVCC 学习圣经:一次穿透MYSQL MVCC》PDF文档,旨在帮助大家在面试中展示出扎实的技术功底,提高面试成功率。此外,他还编写了《尼恩Java面试宝典》等资料,涵盖了大量面试题和答案,帮助读者全面提升技术面试的表现。这些资料不仅内容详实,而且持续更新,是求职者备战技术面试的宝贵资源。
阿里面试:MYSQL 事务ACID,底层原理是什么? 具体是如何实现的?
|
1月前
|
设计模式 缓存 Java
面试题:谈谈Spring用到了哪些设计模式?
面试题:谈谈Spring用到了哪些设计模式?
|
1月前
|
Java 关系型数据库 MySQL
Spring事务失效,我总结了这7个主要原因
本文详细探讨了Spring事务在日常开发中常见的七个失效原因,包括数据库不支持事务、类不受Spring管理、事务方法非public、异常被捕获、`rollbackFor`属性配置错误、方法内部调用事务方法及事务传播属性使用不当。通过具体示例和源码分析,帮助开发者更好地理解和应用Spring事务机制,避免线上事故。适合所有使用Spring进行业务开发的工程师参考。
32 2
|
1月前
|
Java 程序员 Spring
Spring事务的1道面试题
每次聊起Spring事务,好像很熟悉,又好像很陌生。本篇通过一道面试题和一些实践,来拆解几个Spring事务的常见坑点。
Spring事务的1道面试题
|
1月前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
119 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
2月前
|
Java Spring
Spring 事务传播机制是什么?
Spring 事务传播机制是什么?
23 4
|
1月前
|
监控 Java 数据库
Spring事务中的@Transactional注解剖析
通过上述分析,可以看到 `@Transactional`注解在Spring框架中扮演着关键角色,它简化了事务管理的复杂度,让开发者能够更加专注于业务逻辑本身。合理运用并理解其背后的机制,对于构建稳定、高效的Java企业应用至关重要。
56 0
下一篇
无影云桌面