반응형

@TransactionalEventListener 2

[Spring] 이벤트 발행 및 @TransactionalEventListener을 이용한 의존성 줄이기

사이드 프로젝트에서 회원탈퇴 로직을 구현하는 백로그를 담당중이었다. 하지만 회원 탈퇴는 단순 memberService.delete() 메서드 (해당 프로젝트는 물리적 삭제 프로세스를 따르고 있다.)만으로 끝나는 간단한 로직이 아니었다. Member와 타 객체 간 연관관계가 꽤 많았기 때문이다. 회원은 특정 카페에 대한 리뷰를 작성할 수 있다. 회원은 특정 카페에 대해 댓글을 작성할 수 있다. 회원은 특정 카페에 대해 즐겨찾기를 등록할 수 있다. 그렇기 때문에 회원이 탈퇴하면 1. 리뷰와의 연관관계를 끊고 (리뷰 삭제는 안함) 2. 댓글과의 연관관계를 끊고 (댓글 삭제는 안함) 3. 즐겨찾기와의 연관관계를 끊고 해당 즐겨찾기 객체들을 삭제 로직을 수행해야 한다. 원래 MemberService에서는 타 서비..

[Spring] REQUIRES_NEW 옵션만으론 자식이 롤백될 때 부모도 롤백된다

두 개 이상의 트랜잭션이 합류할 경우, 트랜잭션 전파레벨 옵션 설정으로 트랜잭션을 관리할 수 있다. 특히, 트랜잭션 전파레벨 중 REQUIRED, REQUIRES_NEW는 실제로도 꽤나 자주 쓰이는 옵션이라 알아두면 더더욱 좋다. 전파레벨 옵션에 대해 궁금하다면 아래 글을 살펴보자. https://kth990303.tistory.com/385 [Spring] @Transactional의 전파 레벨에 대해 알아보자 스프링에선 진행중인 트랜잭션에서 다른 트랜잭션이 참여할 때의 합류조건을 설정할 수 있는 Propagation 옵션이 존재한다. DB에서 자체적으로 제공해주는 트랜잭션 격리레벨과 다르게 전파레벨은 kth990303.tistory.com 이번 포스팅에서는 REQUIRES_NEW 전파레벨 옵션에 대해..

반응형