一次与面试官:情景对话的一问一答,例数 Spring 事务的那些坑,你有遇到过吗?

本文通过面试对话的形式,深入探讨了Spring事务的原理、何时回滚、何时失效、隔离级别、事务控制及连接唯一性。重点讨论了Spring事务失效的常见场景,如自调用、非public方法、错误异常处理和数据库不支持事务。同时,解释了Spring事务与数据库事务隔离的关系,并解析了Service层内部方法调用时的事务行为。

一次与面试官:情景对话的一问一答,例数 Spring 事务的那些坑,你有遇到过吗?
今天,我们来讲 Spring 中和事务有关的考题。

因为事务这块,面试的出现几率很高。而大家工作中 CRUD 的比较多,没有好好总结过这块的知识,因此面试容易支支吾吾答不出来。于是乎接下来你就会接到一张好人卡,如"你很优秀,不适合我们公司!"

主要内容如下:

Spring 事务的原理;
Spring 什么情况下进行事务回滚;
Spring 事务什么时候失效;
Spring 事务和数据库事务隔离是不是同一个概念;
Spring 事务控制放在 Service 层,在 Service 方法中一个方法调用 Service 中的另一个方法,默认开启几个事务;
怎么保证 Spring 事务内的连接唯一性。

最新2020整理收集的一线互联网公司面试真题(都整理成文档),有很多干货,包含netty,spring,线程,spring cloud等详细讲解,也有详细的学习规划图,面试题整理等,我感觉在面试这块讲的非常清楚:获取面试资料只需:点击这里领取!!!暗号:CSDN在这里插入图片描述

1. Spring 事务的原理

首先,我们先明白 Spring 事务的本质其实就是数据库对事务的支持。没有数据库的事务支持,Spring 是无法提供事务功能的。

那么,我们一般使用 JDBC 操作事务的代码如下:

获取连接 Connection con = DriverManager.getConnection();
开启事务 con.setAutoCommit(true/false);
执行 CRUD;
提交事务、回滚事务:con.commit() ,con.rollback();
关闭连接 conn.close()。

使用 Spring 事务管理后,我们可以省略步骤 2 和步骤 4,让 AOP 帮你去做这些工作,关键类在 TransactionAspectSupport 这个切面里。大家有兴趣自己去翻,我就不列举了。因为公众号类型的文章,实在不适合写一些源码解析!

2. Spring 什么情况下进行事务回滚

首先我们要明白, Spring 事务回滚机制是这样的:当所拦截的方法有指定异常抛出,事务才会自动进行回滚!

因此,如果你默默的吞掉异常,像下面这样:

@Service
public class UserService{
   
   
    @Transactional
    public void updateUser(User user) {
   
   
        try {
   
   
            System.out.
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值