본문 바로가기

트랜잭션전파3

트랜잭션 전파 다양한 옵션 "트랜잭션 전파의 다른 옵션은 뭐가 있을까?" 이번글은 트랜잭션 전파의 다양한 옵션에 대해 알아보겠습니다.  트랜잭션 전파 옵션은 어떤게 있을까요? REQUIRED, REQUIRES_NEW, SUPPORT, NOT_SUPPORT, MANDATORY, NEVER, NESTED가 있습니다. REQUIRED가장 많이 사용하는 기본 설정으로, 기존 트랜잭션이 없으면 생성하고, 있으면 참여합니다.하나의 트랜잭션이 시작된 후에 다른 트랜잭션 경계가 설정된 메소드를 호출하면 자연스럽게 같은 트랜잭션으로 묶입니다. REQUIRES_NEW항상 새로운 트랜잭션을 생성합니다. 기존 트랜잭션이 없으면 새로운 트랜잭션을 생성하고, 기존 트랜잭션이 있는 경우 새로운 트랜잭션을 생성합니다. SUPPORT트랜잭션을 지원한다는 뜻입니.. 2025. 2. 17.
트랜잭션 전파 REQUIRES_NEW 활용 로그 저장 로직에서 에러가 터지는데, 왜 회원 가입도 안되는거지?로그 저장 로직의 성공 여부에 상관 없이 회원 가입을 하고 싶은데 어떻게 하지? 아래의 글은 김영한님의 Spring DB V2 강의를 참고해서 작성했습니다.   이번 글은 아래와 같은 상황을 가정하고, 해결하는 방법을 다루는 글입니다.신입 개발자 A씨는 회원 가입과 회원 가입 이력 로그 저장을 구현하는 업무를 맡았습니다.A씨는 데이터 정합성을 보장하기 위해 두 작업을 하나의 트랜잭션으로 묶어 처리했습니다.그러던 어느 날, 고객들로부터 회원 가입이 되지 않는다는 항의가 쏟아지기 시작했습니다.이상을 감지한 A씨가 원인을 확인해본 결과, 회원 가입 이력 로그 저장 과정에서 오류가 발생하면서,같은 트랜잭션 내에 포함된 회원 정보 저장 로직까지 롤백.. 2025. 2. 15.
트랜잭션 전파(REQUIRES_NEW) 내부 트랜잭션에 롤백이 발생해도 외부 트랜잭션을 커밋 하는 방법은 없을까?  이번 글은 트랜잭션 전파 옵션 중 REQUIRES_NEW에 대해 소개하고, 예제 코드를 통해 알아보겠습니다.아래의 글은 김영한님의 Spring DB V2 강의를 참고해서 작성했습니다. REQUIRES_NEW 옵션은 무엇일까요? REQUIRES_NEW 옵션REQUIRES_NEW 옵션은 외부 트랜잭션과 내부 트랜잭션을 완전히 분리해서 각각 별도의 물리 트랜잭션을 사용하는 방법입니다. 그래서 커밋과 롤백도 REQUIRES 옵션과 다르게 각각 실행합니다. 내부 트랜잭션에 롤백이 발생해도 외부 트랜잭션에 영향을 주지 않게 됩니다. 반대로 외부 트랜잭션에 롤백이 발생해도 내부 트랜잭션에 영향을 주지 않게 됩니다. 별도의 트랜잭션을 사용하기.. 2025. 2. 14.