DTO 논쟁에 대하여

DTO 논쟁

https://blog.daum.net/question0921/829

DTO 패턴이 뭘까?

DTO 패턴은 속성과 getter/setter 메서드로 구성된 자바 클래스 패턴을 말한다. 객체는 상태(state)와 행위(behavior)로 구성됨이 기본 원칙이지만 데이터만을 가지는 데이터 홀더의 개념과 단순 오브젝트로 구성된 도메인 모델 객체이다.

각 계층간의 데이터 전달을 위한 최선의 선택으로 추천되고 있다.

DTO 패턴의 문제점

데이터를 전달할 때 데이터가 유실되고, 이 때 발생하는 에러를 디버깅하는데 상당히 많은 시간이 소요될 수 있다. 또한 도메인 모델을 DTO 모델로, DTO 모델을 도메인 모델로 전달하는 추가적인 작업 비용이 발생한다.

굳이 사용할 필요가 없는데 남용되는 경향이 있다.

DTO의 빈약한 도메인 모델(Anemic Domain Model)에 대한 논쟁

객체에 상태와 행위가 들어가는 것이 아닌, 오로지 상태만 들어가므로 구조적으로 불합리한 형태의 코드를 생산하게 한다고 한다. 모든 도메인은 행위에 해당하는 로직을 가지고 있고, 그 로직을 어떠한 형태로든 나타내야 하는데 그것이 도메인의 상태 정보만 가지고 있는 빈약한 도메인 모델에서 모두 빠져나오와 다른 형태로 구성되기 때문.

때문에 도메인 객체의 데이터홀더(Data holder)화와 서비스 레이어의 비대를 초래할 수 있다.

Last updated