nest를 사용하면서, 새로운 패턴을 접하게 되었는데, 구성은 model - controller - service - repository로 되어있다. 각 계층의 역할은 다음과 같다.
repository는 service와 마찬가지로 provider 개념에 해당하므로, 각 기능 모듈의 provider에 repository도 삽입해주어야만 한다.
model = DB 연결
controller = request, response 제어 및 처리
service = 비즈니스 로직
repository = DB Query
이 계층의 장점은 repository
라는 계층을 이용해서, 각 계층별 역할과 책임을 더욱 명확하게 했다는 것이다. 이의 이점은 다음과 같다고 생각한다.
1) DB Query와 비즈니스 로직을 분리함으로써, 여러 DB를 사용하는 상황, DB를 변경하는 상황에서 개별 service들을 모두 변경할 것 없이, repository만 변경하면 된다.
2) 즉, 각 계층들은 본인의 역할과 책임에 더 충실할 수 있으며, 이는 곧 코드의 가독성과 재사용성을 극대화시킨다.
cats
- dto
- cats.controller.ts
- cats.schema.ts
- cats.service.ts
- cats.repository.ts
- cats.module.ts