@Transaction
-
[SpringBoot] @Transactional 어노테이션, 트랜잭션 전파IT/삽질 2023. 5. 4. 23:26
서비스(Service)에서 2개 이상의 DAO 를 처리하는 경우 트랜잭션 처리를 해야 한다. 가장 흔한 예시로 은행 계좌이체 사례를 자주 언급한다. A계좌에서 출금 처리 후, B계좌로 입금 처리가 정상 완료되어야 계좌이체를 끝낼 수 있는데, 만약 A 계좌 출금 이후 B 계좌 입금 처리 중 오류가 발생한다면 A 계좌 출금처리도 다시 취소를 해야 한다. 이러한 일련의 트랜잭션 처리를 스프링의 @Transaction 어노테이션을 사용해서 핸들링할 수 있다. @Transaction 어노테이션은 클래스 혹은 메서드에 적용 가능하고, 해당 범위는 하나의 트랜잭션으로 묶인다. REQUIRED, REQUIRES_NEW 2개의 속성값이 주로 많이 사용되는데 각각 "전체 롤백", "부분 롤백" 을 위해 사용된다. (참고 ..