Java

Java

[Transactional] 거래가 왜 없었을까요?

지난글...https://kyeum-d.tistory.com/35 [Transactional] 거래가 있었는데요.. 없었습니다거래내역의 실종입사하자마자 흥미로운 주제의 CS가 들어왔습니다. 몇달 동안 지속적으로 유입되던 문의였습니다. 내용은 "거래를 분명히 했고 잘 됐다고 떳는데요.." "거래내역에 제 거래가kyeum-d.tistory.com 지난 포스팅에서 @Transactional 이 붙어있음에도 DB Stored Procedure 의 Rollback 을 감지하지 못하고  이후의 프로세스를 처리하는 문제를 식별했습니다. 이번 포스팅에서는 Transactional 이 어떻게 동작하는지 이해하고 왜 이런 현상이 발생했는지 분석하는 시간을 가져보겠습니다. * 이번 포스팅은 TransactionManager..

Java

[Transactional] 거래가 있었는데요.. 없었습니다

거래내역의 실종입사하자마자 흥미로운 주제의 CS가 들어왔습니다. 몇달 동안 지속적으로 유입되던 문의였습니다. 내용은 "거래를 분명히 했고 잘 됐다고 떳는데요.." "거래내역에 제 거래가 없는데요?" 가장 먼저 확인했던 것은 메서드에 @Transactional 이 걸려있는가 였습니다. 문제 없이 걸려있던 점을 확인했고 그렇다면 어딘가 Exception 이 발생하여 Rollback 된 것으로 보였습니다. 그런데 말입니다. 쿠폰, 포인트는 사용 됐어요 @Transactional 이 적용된 메서드에서 거래내역은 저장이 안되고 거래내역 저장 후 일어나는 동작인 쿠폰 사용 처리와 포인트 사용 처리는  정상적으로 적용이 된 것이였습니다. 당연히 checked Exception 을 catch 로 잡은게 아닐까 생각했지..