Nest.js 정리 (transaction)

0

Transaction

예를 들어, 은행어플에서 a계좌에서 b계좌로 1000원을 입금하는 과정에서 돈은 빠져나가고 b계좌로 받기 전 에러가 나면 1000원이라는 데이터는 유실된다. 또 a계좌는 1000원이 차감된 잔액으로 계속 유지가 된다.
그래서 출금과 입금을 transaction을 사용하여 하나로 논리적 작업 단위로 묶을 수 있으며, 따라서 모두 다 실행되거나 롤백이 될 수 있게 작업해야한다.
nest에서 이런 롤백기능을 편하게 제어할 수 있는 기능을 제공한다.

createQueryRunner()로 queryRunner를 생성하고 기존 repository방식으로 type orm을 사용하는 부분을 queryRunner.manager로 바꿔주면 되고, 꼭 try, catch문으로 사용해서 에러발생시 catch에 걸려서 rollbackTransaction()이 실행되도록 한다.

또 이미지를 참고하면 의도적으로 코드 중간에 error를 발생시켰는데 이 때 movieDetail에 데이터가 추가되어있지 않는다. 만약 기존 repository방식으로 사용했다면 movieDetail 테이블에 데이터는 추가가 되었을 것이다.

profile
기록을 위한 블로그

0개의 댓글

관련 채용 정보