interview
interviewduck-java-backend
什么是Spring的事务管理?

面试鸭Java后端面试题, 什么是 Spring 的事务管理?

面试鸭Java后端面试题, 什么是 Spring 的事务管理?

QA

Step 1

Q:: 什么是 Spring 的事务管理?

A:: Spring 的事务管理是通过声明性和编程式两种方式来管理数据库事务的一种机制。声明性事务管理通过注解或 XML 配置文件定义事务边界,而编程式事务管理则是通过直接调用 TransactionManager API 来实现。

Step 2

Q:: Spring 事务管理的传播行为有哪些?

A:: Spring 事务管理提供了多个传播行为选项,包括:REQUIRED、REQUIRES_NEW、MANDATORY、NEVER、SUPPORTS、NOT_SUPPORTED、NESTED。每个传播行为定义了事务方法如何与现有事务协作或创建新事务。

Step 3

Q:: 如何在 Spring 中配置声明性事务?

A:: 可以通过在配置类上使用 @EnableTransactionManagement 注解来启用声明性事务管理,并在事务方法上使用 @Transactional 注解来定义事务属性。也可以在 XML 配置文件中定义事务管理器和事务属性。

Step 4

Q:: 什么是事务的隔离级别?Spring 提供了哪些隔离级别?

A:: 事务的隔离级别决定了一个事务与其他事务的交互程度。Spring 提供了五种隔离级别:DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ 和 SERIALIZABLE。每种级别对脏读、不可重复读和幻读有不同的保护。

Step 5

Q:: Spring 事务管理的回滚规则是什么?

A:: Spring 事务管理默认会在运行时异常(RuntimeException)和 Error 发生时回滚事务。在受检异常(Checked Exception)发生时不会回滚,但可以通过在 @Transactional 注解中设置 rollbackFor 和 noRollbackFor 属性自定义回滚规则。

Step 6

Q:: 如何在 Spring 中使用编程式事务管理?

A:: 可以通过 PlatformTransactionManager 接口实现编程式事务管理。使用 TransactionTemplate 或直接操作 TransactionStatus 对象来手动管理事务的开始、提交和回滚。

Step 7

Q:: 什么是 Spring 的嵌套事务?

A:: 嵌套事务是指在一个事务中可以包含另一个事务。Spring 提供了 NESTED 传播行为来支持嵌套事务。嵌套事务在主事务提交之前可以独立回滚。

用途

Spring 事务管理在实际生产环境中非常重要,尤其是在涉及多个数据库操作时。事务管理确保了一致性和数据完整性,防止数据不一致的情况。常见的应用场景包括银行转账、订单处理、库存管理等需要保证数据一致性的业务场景。\n

相关问题

🦆
Spring 的依赖注入DI是什么?

依赖注入是一种设计模式,用于将对象的依赖关系从代码中解耦。Spring 通过构造函数注入、setter 注入和字段注入三种方式实现依赖注入。

🦆
什么是 Spring 的 AOP?

面向切面编程(AOP)是一种编程范式,允许通过在不修改源代码的情况下向程序添加横切关注点(如日志、事务管理、安全等)。Spring AOP 提供了声明式和编程式两种方式来实现 AOP 功能。

🦆
Spring Boot 和 Spring Framework 有什么区别?

Spring Boot 是 Spring Framework 的一个子项目,旨在简化 Spring 应用的创建、配置和部署。Spring Boot 提供了自动配置、嵌入式服务器和生产就绪的功能,使开发者更容易构建基于 Spring 的应用程序。

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

可以通过在配置文件中定义数据源 bean(例如,使用 DataSource 接口实现类如 HikariCP、DBCP)或通过 Spring Boot 的 application.properties 文件进行自动配置。

🦆
什么是 Spring 的 RestTemplate?

RestTemplate 是 Spring 提供的一个同步 HTTP 客户端,用于简化与 RESTful 服务的交互。它支持多种 HTTP 方法,并提供了便捷的方法来发送请求和处理响应。