[Spring JPA] 부모 트랜잭션 내에 자식 트랜잭션이 실행될 때 (@Transactional)

Titu·2022년 2월 9일
0

Spring

목록 보기
3/5

결론

@Transactional을 중첩해서 사용할 경우에, 자식 트랜잭션은 부모 트랜잭션과 동일하다.

예제 코드

@Transactional
public void parentMethod() {
	childOneMethod();
    childTwoMethod();
}

@Transactional
public void childOneMethod() {
	...
}

@Transactional
public void childTwoMethod() {
	...
}

트러블 슈팅 중, Transaction이 여러개 중첩 된 것이 문제일 것이라는 가설 하에 리서치를 진행하였다. 하지만 리서치 결과, childOneMethod와 childTwoMethod는 모두 parentMethod의 Transaction을 이어받기 때문에, 기본 설정에 따르면 동일한 트랜잭션으로 묶여져 있다는 것을 확인하였다.

@Transactional의 propagation(전파) 기본 설정은 REQUIRED여서 부모 트랜잭션 내부에 자식 트랜잭션이 실행되는 경우, 부모 트랜잭션에 자식 트랜잭션이 합류한다. 부모 트랜잭션이 없는 경우에만 새로운 트랜잭션이 생성된다.


Reference: https://deveric.tistory.com/86

profile
This is titu

0개의 댓글