Wecode -기업협업 인턴 (부트캠프)/기업협업 독학, 공부
dao, controller, router를 쓰는거랑, module, repository, controller를 쓰는 차이
Queen Julia
2023. 11. 7. 13:21
dao, controller, router 패턴과 module, repository, controller 패턴은 각각 소프트웨어 개발에서 사용되는 두 가지 서로 다른 접근 방식입니다. 이 두 가지 패턴은 각각 다른 목적과 설계 철학을 가지고 있습니다. 여기에 각 패턴의 주요 차이점을 설명하겠습니다:
1. dao, controller, router 패턴:
- DAO (Data Access Object): 데이터베이스와 상호 작용을 추상화한 객체를 나타내며, 데이터베이스에서 데이터를 검색, 추가, 수정 또는 삭제하는 데 사용됩니다. DAO는 데이터베이스 연결, 쿼리 작성 및 데이터베이스 테이블 매핑을 처리합니다.
- Controller: 비즈니스 로직을 처리하고 클라이언트 요청을 처리하는 중간 계층입니다. Controller는 요청을 수신하고 DAO 레이어를 통해 데이터베이스와 상호 작용하며, 이후 응답을 반환합니다.
- Router: 라우터는 요청 URL 경로와 해당 컨트롤러를 매핑하는 역할을 합니다. 라우터는 클라이언트 요청을 적절한 컨트롤러로 라우팅하며, Express.js와 같은 웹 프레임워크에서 주로 사용됩니다.
2. module, repository, controller 패턴 (NestJS와 TypeORM 기반):
- Module: NestJS에서 모듈은 의존성 주입 및 애플리케이션 컴포넌트의 범위를 정의하는 데 사용됩니다. 모듈은 애플리케이션을 기능별 논리적 모듈로 나누는 데 도움을 줍니다. 모듈은 서비스, 컨트롤러, 리포지토리 및 기타 관련 구성 요소를 함께 그룹화합니다.
- Repository: Repository는 데이터베이스와의 상호 작용을 추상화한 컴포넌트입니다. Repository는 데이터베이스에서 데이터를 가져오고 추가하며, TypeORM과 같은 ORM을 통해 엔터티 객체를 사용하여 데이터베이스 테이블과 상호 작용합니다.
- Controller: Controller는 HTTP 요청을 처리하고 클라이언트와 상호 작용하는 데 사용됩니다. Controller는 서비스 및 리포지토리를 사용하여 비즈니스 로직을 실행하고 응답을 반환합니다.
주요 차이점:
- dao, controller, router 패턴은 전통적인 방식으로 데이터베이스 연동과 HTTP 요청 처리를 분리합니다.
- module, repository, controller 패턴은 NestJS와 TypeORM과 같은 모던 웹 프레임워크와 ORM을 사용하여 모듈화 및 의존성 주입을 지원하며 더 모듈화된, 구조화된 방식으로 개발을 할 수 있습니다.
module, repository, controller 패턴은 현대적인 웹 애플리케이션 개발에서 많이 사용되며, 코드의 구조화, 테스트 용이성 및 확장성을 향상시키는 데 도움을 줍니다. NestJS와 TypeORM와 같은 도구를 사용하면 이러한 패턴을 쉽게 구현하고 관리할 수 있습니다.