2022.12.8 TIL

듀듀·2022년 12월 8일
0

@Transactional

트랜잭션이란?
DBMS 에서 상호작용의 단위. 더 이상 쪼개질 수 없는 최소의 연산이라는 의미.

온라인으로 상품을 구매한다고 가정했을 때, 결제를 하는 짧은 시간동안 다음과 같은 일이 벌어진다면?

  • 판매자가 상품의 가격을 바꿔서 잘못된 금액이 결제됨.
  • 같은 상품을 다른 살마도 구매해서 재고는 하나인데 2명에게 결제됨.
  • 결제가 완료되기 직전에 네트워크가 끊어져서 돈은 나갔지만 구매는 완료되지 않음.

이러한 예외상황을 막기위해 필요한 조치들은

  • 결제중일 때는 상품의 정보를 바꿀 수 없게한다.
  • 결제중일 때 해당 상품을 다른 사람이 결제하지 못하게 한다.
  • 구매가 오류로 완료되지 않는다면, 결제 금액을 환불처리 되게 한다.

결제는 다른 사람과 독립적으로 이뤄지고, 과정 중에 다른 연산이 끼어들 수 없다.
오류가 생긴 경우 연산을 취소하고 원래대로 되돌린다.

@TransactionalClassMethod에 붙여줄 경우 해당 범위 내 MethodTransaction이 되도록 보장해준다.

profile
나는 내 의지대로 된다.

0개의 댓글