[Spring] @Transactional과 UnexpectedRollbackException
트랜잭션 전파를 공부하면 내부 트랜잭션과 외부 트랜잭션을 공부하게 되는데, 이때 내부 트랜잭션에서 롤백이 호출되었을 때 외부 트랜잭션에서 이를 처리하는 2가지 경우가 존재한다. 외부 트랜잭션 트랜잭션이 시작된 곳을 외부 트랜잭션이라고 한다. 외부 트랜잭션이 최종적으로 커밋 또는 롤백을 처리한다. 내부 트랜잭션 외부 트랜잭션에 참여하는 트랜잭션을 내부 트랜잭션이라고 한다. 내부 트랜잭션에서 발생한 커밋 또는 롤백은 실제로 호출되지 않는다. 커넥션은 단 한 번만 커밋 또는 롤백이 가능하기 때문에, 내부 트랜잭션에서 커밋 또는 롤백을 호출하면 외부 트랜잭션까지 트랜잭션이 사용되지 않고 중간에 종료되는 문제가 발생한다. 예외 1 - RuntimeException MemberService에서 MemberRepos..
Spring
2023. 9. 6. 13:34