본문으로 바로가기

try catch 와 롤백..

category JAVA/Spring Framework 2020. 12. 2. 09:03

스프링을 모르니 이런 삽질이..

트랜잭션 처리 안에서 내부 트랜잭션 행위 대해 try catch 로 예외처리를 하였으나 

'Transaction rolled back because it has been marked as rollback-only' 메세지로 날 괴롭히던 찰라..우아한형제들 기술 블로그를 통해 왜 그런 현상이 발생하는지 알게 되었다.

요약 하자면 첫 트랜잭션 안에서 다른 트랜잭션 메서드를 호출 하게 될때, RuntimeException 이 일어날 경우 전체 가 롤백되기 때문에 커밋할 수 없다는것!

우형의 글에 따라 DataSourceTransactionManager를 직접 관리하기때문에 PROPAGATION_NESTED처리..

이게 아니더라도 setGlobalRollbackOnParticipationFailure(false) 으로도 처리 가능하다

참고 : woowabros.github.io/experience/2019/01/29/exception-in-transaction.html

 

응? 이게 왜 롤백되는거지? - 우아한형제들 기술 블로그

이 글은 얼마 전 에러로그 하나에 대한 호기심과 의문으로 시작해서 스프링의 트랜잭션 내에서 예외가 어떻게 처리되는지를 이해하기 위해 삽질을 해본 경험을 토대로 쓰여졌습니다. 스프링의

woowabros.github.io