로딩
요청 처리 중입니다...

Domain 객체에 Repository 관련 코드가 있으면 안 된다.

 Domain 객체에 Repository 관련 코드가 있으면 안 된다.

코드 리뷰를 하다보면 Domain 객체에 Repository의 코드가 들어있는 걸 종종 발견한다. 그래서 왜 Domain 객체에 Repository 관련 코드가 있으면 안 되는 지 설명하고 넘어가려 한다.

아래의 코드는 Nest.js에서 TypeORM을 활용한 코드 중 Post의 Entity에 대한 코드이다. post.entity.ts 위 코드를 보면 도메인(Domain) 객체인 Post가 CustomerRepository에 의존하고 있다. 즉, Post 객체 코드 내부에 CustomerRepository라는 코드가 존재한다.

도메인(Domain)에서 레포지토리(Repository)를 다루는 것은 좋지 않은 코드라고 얘기한다. 왜 그럴까?

이 얘기에 대한 대답을 그나마 간단하게 설명하기 위해서, 로버트 C.마틴의 ‘클린 아키텍처’의 내용을 기반으로 설명하겠다. 그렇다고 ‘클린 아키텍처’의 내용을 너무 깊이 설명하게 되면, 한 편의 글로 끝나지 않게 된다.

따라서 왜 도메인(Domai...

# DDD # Domain # Repository # 객체지향 # 백엔드개발