spring事务的传播性面试题
时间: 2023-10-28 17:54:45 浏览: 38
好的,我明白了。关于Spring事务的传播性,主要有7种,具体如下:
1. PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。
2. PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入这个事务,如果不存在事务,就以非事务执行。
3. PROPAGATION_MANDATORY:支持当前事务,如果当前不存在事务,就抛出异常。
4. PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
5. PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
6. PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
7. PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则新建一个事务。嵌套事务是外部事务的一部分,只有外部事务提交时才会真正的提交。而单独提交子事务,将只会产生内部参数回滚。
相关问题
spring 关于事务的面试题
好的,以下是几个关于Spring事务的面试题:
1. Spring事务的传播行为有哪些?它们的含义是什么?
答:Spring事务的传播行为包括REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER和NESTED。它们的含义如下:
- REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
- SUPPORTS:支持当前事务,如果当前没有事务,就以非事务的方式执行。
- MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
- REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
- NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
- NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
- NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则新建一个事务。
2. Spring事务的隔离级别有哪些?它们的含义是什么?
答:Spring事务的隔离级别包括DEFAULT、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ和SERIALIZABLE。它们的含义如下:
- DEFAULT:使用数据库默认的隔离级别。
- READ_UNCOMMITTED:最低的隔离级别,允许读取未提交的数据,存在脏读、不可重复读、幻读等问题。
- READ_COMMITTED:允许读取已提交的数据,避免了脏读,但是仍然存在不可重复读和幻读问题。
- REPEATABLE_READ:保证同一事务中多次读取同一数据时,结果始终一致,避免了脏读和不可重复读,但是仍然存在幻读问题。
- SERIALIZABLE:最高的隔离级别,强制事务串行执行,避免了脏读、不可重复读和幻读,但是会影响并发性能。
3. Spring事务的实现方式有哪些?
答:Spring事务的实现方式包括编程式事务和声明式事务。编程式事务是通过编写代码实现事务控制,比较灵活,适用于复杂的事务场景。声明式事务是通过注解或XML配置实现事务控制,比较简单,适用于简单的事务场景。在实际开发中,通常使用声明式事务来实现事务控制。
spring事务面试题
当谈到Spring事务时,面试中可能会问到以下一些问题:
1. Spring事务管理的几种方式是什么?
2. @Transactional注解的作用是什么?它的常用属性有哪些?
3. 什么是事务隔离级别?Spring事务支持哪些隔离级别?
4. 什么是脏读、幻读和不可重复读?如何防止这些问题发生?
5. Spring事务的传播行为有哪些?它们各自的含义是什么?
6. 什么是声明式事务管理?如何配置声明式事务?
7. Spring事务的底层实现是什么?如何集成其他事务管理器?
8. 在Spring Boot中如何配置和使用事务?
这些问题涵盖了Spring事务相关的基本概念、注解配置、隔离级别、传播行为以及在Spring Boot中的使用方式。准备好这些问题的答案将有助于你在面试中展示你对Spring事务管理的理解和经验。