이 책에 전반부에서는 웹, 애플리케이션, 도메인, 영속성 계층이 무엇이고, 하나의 유스케이스를 구현하기 위해 각 계층이 어떤 역할을 하는지에 대해 다뤘다.
그런데 늘상 겪는 문제인 각 계층의 모델을 매핑하는 것에 대해서는 거의 다루지 않았다.
여러분도 매퍼 구현을 피하기 위해 두 계층에서 같은 모델을 사용하는 것에 대해 논의해본 적이 있을 것이다.
아마 논쟁은 이런 식으로 진행됐을 것이다.
매핑에 찬성하는 개발자
: 두 계층 간에 매핑을 하지 않으면 양 계층에서 같은 모델을 사용해야 하는데 이렇게 하면 두 계층이 강하게 결합된다.
매핑에 반대하는 개발자
: 하지만 두 계층 간에 매핑을 하게 되면 보일러플레이트 코드를 너무 많이 만들게 된다.
: 많은 유스케이스들이 오직 CRUD만 수행하고 계층에 걸쳐 같은 모델을 사용하기 때문에 계층 사이의 매핑은 과하다.
→ 두 개발자 모두 일정 부분 맞다. 이 개발자들이 결정하는 데 도움이 되도록 몇 가지 매핑 전략을 장단점과 함께 살펴보자.
포트 인터페이스가 도메인 모델을 입출력 모델로 사용하면 두 계층 간의 매핑을 할 필요가 없다.
웹 계층에서 웹 컨트롤러가 SendMoneyUseCase 인터페이스를 호출해 유스케이스를 실행한다.
이 Account 객체를 인자로 가지는데, 이는 웹 계층과 애플리케이션 계층 모두 Account 클래스에 접근해야 한다는 것이다! (두 계층이 같은 모델을 사용)