REQUIRES_NEW
时间: 2024-04-14 15:24:05 浏览: 12
REQUIRES_NEW是一个事务传播行为,用于在数据库事务中创建一个新的独立事务。当一个方法被标记为REQUIRES_NEW时,它将会在一个新的事务中执行,无论当前是否已经存在一个事务。
使用REQUIRES_NEW事务传播行为的方法将会创建一个新的事务,并且如果当前存在一个事务,它将会被挂起。这意味着即使外部事务回滚,内部事务也可以继续执行并提交。
REQUIRES_NEW事务传播行为适用于以下情况:
1. 当需要在一个独立的事务中执行一段代码,并且不受外部事务的影响时。
2. 当需要确保一段代码在一个新的事务中执行,无论外部事务是否成功。
需要注意的是,使用REQUIRES_NEW事务传播行为可能会导致数据库中出现脏读、不可重复读和幻读等并发问题。因此,在使用REQUIRES_NEW时需要谨慎考虑并发访问的情况。
相关问题
PROPAGATION_REQUIRES_NEW
PROPAGATION_REQUIRES_NEW是Spring框架中的一个事务传播行为,它表示每次调用该方法时都会创建一个新的事务,并且如果当前存在事务,则将其挂起。具体来说,PROPAGATION_REQUIRES_NEW会在调用方法时启动一个新的事务,如果当前存在事务,则将其挂起,待新的事务完成后再恢复原有事务。
使用PROPAGATION_REQUIRES_NEW可以实现以下效果:
1. 每次调用该方法都会在一个新的事务中执行,不受外部事务的影响。
2. 如果在该方法中发生异常,只会回滚当前方法的事务,不会影响外部事务。
3. 外部事务和内部事务是完全独立的,互不干扰。
需要注意的是,使用PROPAGATION_REQUIRES_NEW时,内部事务与外部事务是两个独立的事务,它们之间没有任何关联。因此,在使用PROPAGATION_REQUIRES_NEW时需要谨慎考虑事务的一致性和隔离性。
spring的Transactional传播机制,REQUIRES_NEW
REQUIRES_NEW 是 Spring Transactional 的一种传播行为。当一个方法被标记为 REQUIRES_NEW 时,它将在一个新的事务中运行。如果当前存在一个事务,它将被挂起,直到 REQUIRES_NEW 方法执行完毕。
具体来说,REQUIRES_NEW 的行为如下:
1. 如果没有当前的事务,将会创建一个新的事务。
2. 如果存在当前的事务,则将当前的事务挂起,并创建一个新的事务。
3. REQUIRES_NEW 方法执行完毕后,新的事务将被提交,而当前事务将在挂起的地方回复执行。
使用 REQUIRES_NEW 传播行为可以实现一些独立的、与当前事务无关的操作。这样做可以确保这些操作可以独立地进行事务管理,不会受到外部事务的影响。
需要注意的是,REQUIRES_NEW 可能会导致数据不一致或并发问题,因为它会创建一个新的事务并独立进行操作。因此,在使用 REQUIRES_NEW 时需要谨慎考虑,并确保适当处理可能出现的并发情况。