NestJS

Nestjs/TypeOrm/ 트랜젝션 처리 queryRunner

25G 2023. 11. 6. 21:25

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를 통해서 사용해야 트렌젝션이 걸립니다.

'NestJS' 카테고리의 다른 글

ORM에 의존해선 안되는 이유  (1) 2023.11.06
Node.js 이벤트루프  (0) 2023.11.06
TypeOrm/ Transaction  (0) 2023.11.06
서버사이드 렌더링 (CSR/SSR)  (0) 2023.11.06
NestJs swagger문서 보안  (1) 2023.11.06