Nestjs/TypeOrm/ 트랜젝션 처리 queryRunner

25gStroy·2022년 1월 25일
0

Nest.js

목록 보기
18/23

TypeOrm 트렌잭션 처리

TypeOrm에서 제공해주는 트랜잭션 처리는 크게 4가지 정도의 방법을 사용한다.

queryRunner

  • queryRunner의 장점은 수동으로 트렌젝션 제어를 하기때문에 좀 더 유연하게 트랜젝션 처리를 할 수 있다는 장점이있습니다.
    하지만 문서에서처럼 new해서 들고오는 방법은 nest에서 권장하는 방식이 아니기때문에 di해서 커넥션 을 들고옵니다.
  • 그리고 공식 문서에서는 queryRunner를 사용하라고 하는 이유는 데코레이터를 사용하면 서비스에 di하기도 힘들고 트랜젝션 처리가 제대로 이루어지지않습니다.

queryRunner 사용시 유의할점

  • try할때 db로직이 이루어진후 마지막에 꼭 await queryRunner.commitTransaction(); 를 해줘서 커밋처리를 해줘야합니다.
  • finally를 사용해서 try/catch가 끝나면 꼭 await queryRunner.release();를 사용해 줘서 db커넥션을 끊어줘야합니다
    • 왜냐하면 db에 커넥션이 계속늘어나면 좋지않을 뿐더러 일정 이상 넘어가면 커넥션이 안되기 때문입니다.
  • Repository를 사용할때는 queryRunner.manager를 통해서 사용해야 트렌젝션이 걸립니다.
profile
애기 개발자

0개의 댓글