面试鸭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 传播行为来支持嵌套事务。嵌套事务在主事务提交之前可以独立回滚。