Post

데이터소스가 사기인데 왜 레포 주입해서 쓰는거임?

social-feed-hub의 게시물 목록 조회 API 구현 중 고민

데이터소스가 사기인데 왜 레포 주입해서 쓰는거임?

데이터소스가 사기인데 왜 레포 주입해서 쓰는거임?

의문

  • Module 파일에 TypeOrmModule.forFeature([]) import 안 해도 그냥 써짐
  • 멤버변수에 Repo 줄줄이 달지 않고 DataSource 변수만 선언해준 뒤 getRepository(${Entity}) 하면 되어서 뭔가 깔끔하게 보임

결론

  • Repository를 직접 주입해서 쓰는 경우
    • 도메인, 관심사 분리
    • DI 컨테이너가 미리 의존성 주입 시켜놔서 쓰기 편하다.
    • 테스트, 유지보수가 비교적 쉽다.
  • DataSource를 사용하는 경우
    • 복잡한 쿼리를 작성하거나 특정 엔티티에 종속되지 않은 로직이 필요할 때 사용한다.
    • 같은 패턴을 반복해야 해 번거로울 수 있다.

by GPT4o

DataSource는 한 단계 상위 개념인 것 같아서, 지금 수준의 코드를 짤 땐 굳이 안 쓸 것 같다.

This post is licensed under CC BY 4.0 by the author.