인프런 커뮤니티 질문&답변

psam1017님의 프로필 이미지
psam1017

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

스프링 트랜잭션 전파7 - REQUIRES_NEW

3번째 tx가 1번째 tx에 참여하게 할 수 있나요?

작성

·

355

·

수정됨

0

안녕하세요. 현재 스프링 트랜잭션 전파7을 듣는 예제에서 제가 3번째 트랜잭션을 만들어봤습니다.

 

2번째 트랜잭션은 REQUIRES_NEW이므로 새로운 커넥션이 생성되고 1번째 커넥션은 지연됩니다. 그 결과 3번째 트랜잭션을 만들면 2번째 트랜잭션에 참여하는 것처럼 보입니다.

 

그러면 2번째 트랜잭션을 사용하다가 잠시 2번째를 지연시키고, 다시 1번째를 사용하면서 3번째가 이에 참여하게 만들었다가 다시 2번째를 사용하도록 만들 수도 있나요?

 

[예시]

[tx 1] 생성

[tx 1] 지연, [tx 2] 생성

[tx 2] 지연, [tx 1] 사용

[tx 3] 생성, [tx 1]에 참여

[tx 3]과 [tx 1] 커밋

[tx 2] 커밋

 

이런 상황을 만날 일은 없어보이고, 이런 문제상황은 다른 해결방법이 있겠지만 트랜잭션 매니저로 위와 같은 상황을 해결할 수 있는지가 궁금합니다.

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. psam1017님

저도 이렇게 복잡한 상황을 만나보지 않아서 정확한 답을 드리기는 어려울 것 같아요.

제 생각에 하나의 쓰레드에서 순서대로 실행되기 때문에 잠시 뭔가를 지연시키고 다시 1번을 실행하고 하는 부분은 어렵다고 봅니다.

감사합니다.

 

psam1017님의 프로필 이미지
psam1017
질문자

답변 감사합니다. 확실히, 스레드 하나에서 이루어지는 거라고 생각하면 이해가 갑니다.

그리고 더 다른 좋은 방법이 있는데, 굳이 억지로 만들 필요는 없죠!

psam1017님의 프로필 이미지
psam1017

작성한 질문수

질문하기