interview
spring
Spring事务有几个隔离级别?

Spring面试题, Spring 事务有几个隔离级别?

Spring面试题, Spring 事务有几个隔离级别?

QA

Step 1

Q:: Spring 事务有几个隔离级别?

A:: Spring 事务有五个隔离级别: 1. DEFAULT: 使用后端数据库默认的隔离级别。 2. READ_UNCOMMITTED: 允许读取未提交的数据,可能导致脏读、不可重复读、幻读。 3. READ_COMMITTED: 只能读取已经提交的数据,防止脏读,但可能导致不可重复读和幻读。 4. REPEATABLE_READ: 保证在同一个事务中多次读取同样数据结果一致,防止脏读和不可重复读,但可能导致幻读。 5. SERIALIZABLE: 最高的隔离级别,所有事务依次执行,防止脏读、不可重复读和幻读,但性能最差。

Step 2

Q:: Spring 事务传播行为有几种类型?

A:: Spring 事务传播行为有七种类型: 1. REQUIRED: 如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 2. REQUIRES_NEW: 总是创建一个新的事务,如果当前存在事务,则挂起当前事务。 3. SUPPORTS: 如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。 4. NOT_SUPPORTED: 以非事务方式执行,如果当前存在事务,则挂起当前事务。 5. MANDATORY: 如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。 6. NEVER: 以非事务方式执行,如果当前存在事务,则抛出异常。 7. NESTED: 如果当前存在事务,则创建一个事务嵌套事务执行;如果当前没有事务,则等同于REQUIRED。

Step 3

Q:: 什么是脏读、不可重复读和幻读?

A:: 脏读:一个事务读取了另一个事务未提交的数据。 不可重复读:在同一个事务中,两次读取同样的数据,结果却不一致。 幻读:在同一个事务中,两次查询操作返回的记录数不一致。

Step 4

Q:: Spring 中的 @Transactional 注解有什么作用?

A:: @Transactional 注解用于声明事务管理。它可以应用于类或方法上,指定事务的传播行为和隔离级别,以及是否只读、超时时间和回滚规则等。

Step 5

Q:: 如何处理事务的回滚?

A:: 在Spring中,可以通过在@Transactional注解中设置rollbackFor或noRollbackFor属性来指定哪些异常会触发事务回滚。例如,@Transaction(rollbackFor = Exception.class)表示当抛出任何异常时回滚事务。默认情况下,只有未检查异常(继承自RuntimeException)才会导致事务回滚。

用途

面试这些内容的目的是考察候选人对Spring事务管理的理解和掌握情况。在实际生产环境中,事务管理用于保证数据的一致性和完整性,特别是在涉及到数据库操作时,事务管理能够有效防止数据不一致、脏数据以及并发问题。例如,在处理银行转账、订单处理等场景中,事务管理是非常重要的。正确使用事务管理可以确保这些关键操作要么全部成功,要么全部失败,从而保证系统的稳定性和可靠性。\n

相关问题

🦆
Spring AOP 有什么作用?

Spring AOP(面向切面编程)用于在应用程序中实现横切关注点,如事务管理、日志记录、安全检查等。它允许通过声明的方式将这些关注点与业务逻辑分离,从而提高代码的可维护性和可重用性。

🦆
Spring 中的 Bean 生命周期是什么?

Spring Bean 生命周期包括实例化、依赖注入、初始化以及销毁等过程。通过实现 InitializingBean 和 DisposableBean 接口或使用 @PostConstruct 和 @PreDestroy 注解,可以在Bean的初始化和销毁时执行自定义逻辑。

🦆
如何在 Spring 中配置数据源?

可以通过在Spring配置文件中定义 DataSource Bean 来配置数据源。常见的数据源包括 DriverManagerDataSource、BasicDataSource 以及 HikariDataSource 等。还可以使用Spring Boot的自动配置功能,通过 application.properties 或 application.yml 文件进行配置。

🦆
Spring 中的 IOC控制反转是什么?

IOC(控制反转)是Spring的核心概念之一,它通过依赖注入(DI)实现对象的创建和管理。开发者无需手动创建和管理依赖对象,而是由Spring容器负责注入依赖,从而降低了耦合度,提高了代码的可测试性和可维护性。