rest API를 통해 트랜잭션을 보장하려고 한다.
트랜잭션은 하나의 작업 단위를 뜻한다. 즉 나눠져 있는 작업들을 한데 모아서 성공을 하게 되면 다같이 성공하게 해주는 것이고 실패할 경우 다 같이 실패하게 만들어주는 기능이다. 이는 원자성을 보장해주는 것인데 이와 같은 기능이 필요한 이유는 데이터베이스에 저장할 때 중구난방으로 저장하는 것을 방지해주기 위해 필요하다. 이는 금융권에서 특히 많이 쓰인다. 왜냐하면 금융 시스템은 보통 출금과 입금으로 나뉘어 지는데 출금했을때 오류가 나면 출금한 상태지만 입금은 할 수 없는 돈이 붕뜬 상태가 되버린다. 이를 방지 하기 위해 출금 입금이 둘다 이루어진 경우만 저장이 되거나 둘중 하나라도 안되면 모든 과정이 취소 되는 롤백 과정이 필요하기 때문이다.
django에서 트랜잭션을 구현하는 방법
1.데코레이터를 이용한 트랜잭션
django에서 트랜잭션을 이용하는 가장 간단한 방법으로는 데코레이터를 이용하는 방법이다
@transaction.atomic 이라는 데코레이터를 붙여 주면 된다
이는 django에서 기본적으로 제공해주기 때문에 별다른 모듈의 설치가 필요하지 않다
2.with 명령어를 이용한 트랜잭션
메소드를 전체다 묶는게 아니라 일부분에만 트랜잭션으로 묶어줄 때 사용한다. 트랜잭션으로 묶을 부분을 직접 지정해주면 되기 때문에 비교적 간단하게 처리가 가능하다.