외부 트랜잭션
-
내부 트랜잭션의 롤백과 외부 트랜잭션의 커밋개발/Spring 2023. 7. 6. 17:37
하나의 물리 트랜잭션(실제 commit, rollback을 수행할 수 있는 트랜잭션) 안에 두 개의 논리 트랜잭션이 있다고 가정해보자. 이 둘은 완전히 분리되어 있는 것이 아니라 하나의 트랜잭션 안에 다른 트랜잭션이 존재하는 경우다. 신규 트랜잭션을 외부 트랜잭션이라고 하고 외부 트랜잭션 안에 있는 논리 트랜잭션을 내부 트랜잭션이라고 한다. 내부 트랜잭션 생성 시 전파(propagation) 옵션을 변경하지 않는 한(기본값 REQUIRED), 물리 트랜잭션의 커밋, 롤백은 외부 트랜잭션에서만 가능하다. 기본 동작에서는 두 트랜잭션을 모두 커밋해야 물리 트랜잭션이 커밋된다. 신중하게 접근해야 할 예외 어느 한 쪽이라도 예외가 발생하면 전체 커밋이 불가능한데, 외부 트랜잭션이 롤백되는 경우는 당연히 롤백이 ..