-
[SpringBoot] @Transactional 어노테이션, 트랜잭션 전파IT/삽질 2023. 5. 4. 23:26
서비스(Service)에서 2개 이상의 DAO 를 처리하는 경우 트랜잭션 처리를 해야 한다.
가장 흔한 예시로 은행 계좌이체 사례를 자주 언급한다.
A계좌에서 출금 처리 후, B계좌로 입금 처리가 정상 완료되어야 계좌이체를 끝낼 수 있는데,
만약 A 계좌 출금 이후 B 계좌 입금 처리 중 오류가 발생한다면 A 계좌 출금처리도 다시 취소를 해야 한다.
이러한 일련의 트랜잭션 처리를 스프링의 @Transaction 어노테이션을 사용해서 핸들링할 수 있다.
@Transaction 어노테이션은 클래스 혹은 메서드에 적용 가능하고, 해당 범위는 하나의 트랜잭션으로 묶인다.
REQUIRED, REQUIRES_NEW 2개의 속성값이 주로 많이 사용되는데 각각 "전체 롤백", "부분 롤백" 을 위해 사용된다. (참고 예제)
처음 이 부분이 많이 헷갈렸는데, 아래 블로그 참고해서 이해 완료!
https://velog.io/@minnseong/UnexpectedRollbackException-%EB%B0%9C%EC%83%9D
'IT > 삽질' 카테고리의 다른 글
[SpringBoot] Spring Security, custom login 반응없음 (1) 2023.05.09 [SpringBoot] Security 관련 에러 - Error creating bean with name 'webSecurityConfig' (0) 2023.05.05 [SpringBoot] MyBatis + log4jdbc 설정 시 deprecated 로그 수정 (0) 2023.05.02 [SpringBoot] MyBatis 의존성 추가 후 컴파일 오류 (0) 2023.05.01 [SpringBoot] 롬복 의존성 추가했음에도 property 찾을 수 없다는 오류 만날 때! (0) 2023.04.27