복붙노트

[SPRING] 중첩 된 @Transactional

SPRING

중첩 된 @Transactional

봄에 @Transactional 어노테이션이있는 메소드를 중첩 할 수 있습니까? 다음과 같은 것을 고려하십시오.

@Transactional
public void a() {
    obj.b();
}

@Transactional
public void b() {
    // ... 
}

b ()에서 롤백하고 a ()에서 롤백하면 그러한 경우 어떻게됩니까?

해결법

  1. ==============================

    1.기본적으로 @Transactional에는 REQUIRED의 전파가 있으므로 메소드 b ()에 대한 두 번째 @Transactional 주석은 필요하지 않으므로 메소드 a ()에 의해 호출 된 메소드는 트랜잭션입니다. a () 메소드에 의해 호출 된 메소드 내에서 새 트랜잭션을 시작하려는 경우 전파 규칙을 수정해야합니다. 트랜잭션 전파에 대해 읽으십시오.

    기본적으로 @Transactional에는 REQUIRED의 전파가 있으므로 메소드 b ()에 대한 두 번째 @Transactional 주석은 필요하지 않으므로 메소드 a ()에 의해 호출 된 메소드는 트랜잭션입니다. a () 메소드에 의해 호출 된 메소드 내에서 새 트랜잭션을 시작하려는 경우 전파 규칙을 수정해야합니다. 트랜잭션 전파에 대해 읽으십시오.

  2. from https://stackoverflow.com/questions/6633870/nested-transactional by cc-by-sa and MIT license