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 |