작성
·
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번을 실행하고 하는 부분은 어렵다고 봅니다.
감사합니다.
답변 감사합니다. 확실히, 스레드 하나에서 이루어지는 거라고 생각하면 이해가 갑니다.
그리고 더 다른 좋은 방법이 있는데, 굳이 억지로 만들 필요는 없죠!