🧩Javascript/node.js

Nest.js Repository Pattern활용하기

DevJiun 2022. 3. 23. 07:21

 

Nest.Js 에서 Repository pattern을 활용해 봅시다.

 

Nest에선 컨트롤러는 서비스를 바라보고 있습니다.

TypeOrm을 사용하는 중이고 서비스에 비지니스 로직만 남겨두고 쿼리로직을 분리시키고 싶다면 레포지토리 패턴을 활용하면 됩니다.

 

controller : request, response

service : business

repository : query logic

 

이런식으로 분리해서 사용하면 조금 더 구조를 체계적으로 나눌 수 있게됩니다.

 

적용 전 코드와 적용 후 코드를 비교하면서 보도록 하겠습니다.

 

레포지토리 패턴 적용 전

종속성 주입시 레포지토리를 만들면서 Entity를 주입하고

쿼리 로직을 서비스 안에서 만들어서 DB에 저장하는 형태를 하고 있습니다.

 

비즈니스 로직과 쿼리 로직이 섞여있어 지저분해 보입니다.

 

이제 레포지토리를 따로 분리해보도록 하겠습니다.

 

레포지토리 파일을 생성한 후 따로 분리시켰습니다.

레포지토리 파일을 따로 생성한 후 쿼리로직을 그 안에 만들어두어 처리하고 있습니다.

 

레포지토리 분리후 서비스

훨씬 코드도 간결해지고 서비스는 비즈니스 로직만 처리할 수 있게 됐습니다.

 

엔티티가 많아지고 서비스가 많아지면 서비스를 공유하는 일이 생길 수 있는데

서로 공유하다보면 사이드이펙트도 많아지고 코드가 비대해졌을때 에러를 잡기 힘들어지니 이런식으로 분리해두면

더 좋은 코드베이스를 만들어가는데 유리할 것 같습니다.

 

https://docs.nestjs.com/recipes/sql-typeorm#repository-pattern