작성
·
641
답변 1
3
윤다정님 안녕하세요.
Spring 의 @Transactional 어노테이션은 시작할때 Transaction 을 시작합니다.
기본옵션으로 실행시 부모의 트랜잭션을 따라가게 됩니다.
예를 들어보자면 A Class 에 a 메소드가 있고 B Class 에 b 메소드가 있다고 가정해보겠습니다.
public class A {
private B b;
@Transactional
public void a() {
b.b();
}
}
public class B {
@Transactional
public void B() {}
}
이럴경우 A Class 의 a 에서 새로운 트랜잭션이 생성되고 B.b 메소드를 호출하게됩니다.
b 메소드에도 Transactional 이 있지만 새로 생성하지않고 부모(B.b 메소드를 호출한곳 즉 A.a) 에서 이미 트랜잭션이 생성된 트랜잭션을 그대로 사용하게 됩니다.
자세한 내용은 Spring 의 @Transactional 을 공부해보시면 도움이 되실겁니다.