Architecture/MSA

보상트랜잭션

간지나제 2021. 4. 15. 10:28

Rollback은 @Transactional 어노테이션으로 보통 하게 되는데

UncheckedException인 RuntimeException때 default로 rollback된다.

CheckedException인 다른 Exception은 throw를 해도 rollback되지 않는다.

 

NullPointerException이 Runtime Exception의 예.

 

@Transactional 어노테이션 방식과

EntityManager를 써서 begin, commit, rollback하는 방식이 있다.

한 서비스에서만 가능한듯 하다.

서비스마다 IoC컨테이너가 다르고 빈을 공유하지 않기 때문인듯 하다.

같은 트랜잭션으로 처리가 안 되는 것 같다.

 

한번 간단한 예제를 만들어서 시도해봐야겠다.

 

 

 

 

 

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

 

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

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

woowabros.github.io

 

'Architecture > MSA' 카테고리의 다른 글

Micro Service란?  (0) 2021.03.22
Transaction처리는 어떻게?  (0) 2021.03.22