그럼 만약, 위의 상황에서 MemberService에서 try catch로 에러를 잡아서 복구시키려 한다면?
우선 트랜잭션에 대한 rollbackOnly를 풀어야 할 듯?
뭐 쓰레드로컬로 접근해서 가져오는 거니, 따로 생성하는게 아니라
static? 그런 것에 접근할 듯?
일단 비즈니스에 예를 들면,
회원가입을 하는 데 만약 로그남기는 것에서 오류가 발생해서 회원가입을 못하게 하면..
정말 비즈니스 적으로 비효율적이다.
이럴경우, LogRepository에서 예외를 일으켜 rollback을 해도, 저녀석만 rollback하고 나머지는 제대로 Member 등록이 되도록 하는 게 좋다.
근데 일단,
그냥 LogRepository의 save의 트랜잭션 옵션을 REQUIRES_NEW로 하면 된다.
그럼 트랜잭션을 쟤가 새롭게 시작하게 되는 것이다.
즉, 다른 트랜잭션, 저녀석이 외부 트랜잭션이 되게 된다. 물리 트랜잭션을 다루게 된다.
'스프링 > 6. 스프링 DB-2' 카테고리의 다른 글
60. 트랜잭션 전파 활용 7 (0) | 2023.10.18 |
---|---|
58. 트랜잭션 전파 활용 5 (0) | 2023.10.17 |
57. 트랜잭션 전파 활용 4 (0) | 2023.10.17 |
56. 트랜잭션 전파 활용 3 (0) | 2023.10.17 |
55. 트랜잭션 전파 활용 2 (0) | 2023.10.17 |