Java面试:spring事务的实现方式和原理以及隔离级别

1.spring事务的实现方式

spring框架提供了两种事务的实现方式:编程式事务、声明式事务

编程式事务:在代码中进行事务控制。优点:精确度高。缺点:代码高耦合。

声明式事务:通过@Transactional注解实现事务控制

2.spring事务的底层原理

事务的操作原本是由数据库来控制,但是为了用户进行业务逻辑控制,spring对事务功能进行扩展实现。一般我们我们很少去用编程式事务,更多的是使用@Transactional注解来实现。当使用@Transactional注解后事务的自动功能就会关闭,有spring帮助实现事务管理。

spring的事务管理是通过AOP的代理来实现的,在方法上加上@Transactional注解后,spring会基于这个类生成一个代理对象,会将这个类的代理对象作为bean对象,当使用这个代理对象执行方法时,如果方法上存在@Trancational注解后,那么代理逻辑会把事务自动提交设置为false,然后再去执行原本的业务逻辑方法,如果执行业务逻辑方法没有出现异常,那么代理逻辑就会把事务提交,如果业务逻辑出现异常,那么则会将事务进行回滚。

3.spring事务的隔离级别

Isolation.DEFAULT:使用各个数据库默认的隔离级别【默认】
Isolation.READ_UNCOMMITTED:读取未提交数据(会出现脏读, 不可重复读)(基本不使用)
Isolation.READ_COMMITTED:读取已提交数据(会出现不可重复读和幻读)
Isolation.REPEATABLE_READ:可重复读(会出现幻读)
Isolation.SERIALIZABLE:串行化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值