2010-02-12 1 views
6

DTO가 DTO의 데이터를 기반으로 파생 된 값을 반환하는 인스턴스 메서드를 가질 수 있습니까? 또는 DTO는 순수한 데이터 컨테이너 여야하며 (게터/세터 제외)?DTO에서 파생 값을 반환하는 인스턴스 메서드가있을 수 있습니까?

저의 순수 주의자는 비즈니스 로직이 그러한 방법을 사용하는 것이 쉽지 않다고 말합니다. 그러나 DTO가 (예를 들어) 응용 프로그램 계층에서 공유되는 경우 DTO에 이러한 메서드를 사용하는 인수가있을 수 있습니다.

이것에 대한 의견은 무엇입니까? 수용 가능한 상황이 있습니까? 아니면 이런 종류의 일이 피해야합니까? 그리고 왜/왜 안되죠?

+0

좋은 질문입니다. 물어볼 예정이었습니다! – andy

답변

6

DTO는 동작을해서는 안되며, 프로세스 경계를 ​​넘어 데이터를 전송하기위한 단순한 컨테이너이며 setter/getter만으로 구성되어야합니다.

그렇지 않으면 DTO 패턴의 오용으로 해석해야합니다.

+2

지난 한 해 동안 가장 많이 본 모범 사례 책은 DTO에 대한 조언을 제공했습니다. – Woot4Moo

+0

DTO 패턴은 사용되어야하는지 아닌지에 대한 질문이 구체적으로 제시되었습니다. DTO의 문제점은 많은 경우에 잘못 적용되었다는 것입니다. 프로세스 경계가없는 곳! 그 이유는 비용이 많이 드는 왕복을 절약하기 위해 원격 프로세스에서 데이터를 모으기 때문입니다. – David

+0

DTO에서 @override compareTo를 사용해야합니까 아니면 권장하지 않는 것이 좋습니까? 그 목적을 위해 래퍼를 사용하는 것이 더 낫습니다. –

관련 문제