Java面试题(10)

本文详细介绍了Spring框架中事务的几种实现方式,包括AspectJAOP、代理工厂Bean、注解和不同类型的事务管理(编程式与声明式),以及事务的传播行为,为开发者提供了全面的Spring事务管理指南。
摘要由CSDN通过智能技术生成

56.Spring事务实现方式有哪些

1. aspectJ AOP实现事务

2. 事务代理工厂Bean实现事务

3. 注解方式实现事务

(1)说一下事务 事务是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败。

(2)说一下事务传播的特性(ACID) 原子性:指事务包含的所有操作要么全部成功,要么全部失败。因此事务的操作如果成功就必须完全应 用到数据库,失败也不能对数据库有任何影响。 一致性:指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前 和执行之后都必须处于一致性状态。比如转账操作:a和b的账户共200元,那么无论他们之间怎么互相 转账,这个钱的总额依然是200. 隔离性:指当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所 干扰,多个并发事务之间要互相隔离。 持久性:指一个事务一旦提交,那么对于数据库的修改是永久性的,即便是在数据库系统遇到故障的情 况下也不会丢失提交事务的操作。

(3)说一下事务隔离性

事务隔离级别指的是一个事务对数据的修改与另一个并行的事务的隔离程度,当多个事务同时访问相同 数据时,如果没有采取必要的隔离机制,就可能发生以下问题: 脏读:一个事务读到另一个事务还未提交的更新数据 幻读:当一个事务对一个表的所有数据行都进行了修改,同时另一个事务进行了插入操作,那么第一个 事务的用户就会发现表中出现了一条未被修改过的新插入的数据,就造成了幻读。 不可重复读:在同一事务中先后执行了两条相同的查询语句,但由于其他事务操作了该查询语句相关的 数据,导致两次查询的结果不相同,就是不可重复读

(4)说一下spring事务的隔离级别

隔离级别描述

DEFAULT 使用数据库本身使用的隔离级别,ORACLE(读已提交) MySQL(可重复读) READ_UNCOMITTED 读未提交(脏读)最低的隔离级别,一切皆有可能。

READ_COMMITED 读已提交,ORACLE默认隔离级别,有幻读以及不可重复读风险。 REPEATABLE_READ 可重复读,解决不可重复读的隔离级别,但还是有幻读风险。 SERLALIZABLE 串行化,最高的事务隔离级别,不管多少事务,挨个运行完一个事务的所有子事务之后 才可以执行另外一个事务里面的所有子事务,这样就解决了脏读、不可重复读和幻读的问题了

57.spring支持的事务管理类型有哪些

编程式事务管理:通过代码编程的方式管理事务,灵活性高,但难维护 声明式事务管理:可以将业务代码和事务管理分离,只需要使用注解或xml配置来管理事务

(1)实现事务的三种方式

1. 基于接口:

1. 基于TransactionIntercptor的声明式事务:spring声明式事务的基础,不建议使用

2. 基于TransactionProxyFactoryBean的声明式事务:第一种的改进,简化了配置文件的书 写,不建议使用

2. 基于xml配置

基于和命名空间的声明式事务管理,与SpringAop结合紧密,可以充分利用切点表达式,使事务管 理更加灵活,推荐使用

3. 基于注解配置

基于@Transactional的全注解方式,非常简化了事务管理,只需要给需要实施事务管理的方法或 者类上使用@Transactional注解指定事务规则即可实现事务管理,推荐使用

58.说一下spring的事务传播行为

事务的传播性质指的是当一个事务方法被另一个事务方法调用时,这个事务该如何进行。

(1)Propagation.REQUIRED如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个 新的事务。

(2)Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事 务的方式继续运行。

(3)Propagation.MANDATORY:如果当前存在事务,则加入该事务;如果当前不存在事务,则抛 出异常。

(4)Propagation.REQUIRES_NEW:重新创建一个新的事务,如果当前存在事务,延缓当前的事 务。

(5)Propagation.NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,暂停当前的事 务。

(6)Propagation.NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。

(7)Propagation.NESTED :如果没有,就新建一个事务;如果有,就在当前事务中嵌套其他事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

射手座的程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值