표준 Customer 도메인 개체가 있다고 가정합니다. 고객이 표시되는 화면에는 외부 관리자, 내부 관리자 및 업데이트 계정의 세 가지 화면이 있습니다.여러 DTO에서 도메인 개체 구성
각 화면에는 Customer 개체에 포함 된 모든 데이터의 하위 집합 만 표시됩니다.
문제는 UI가 각 화면 (예 : DTO)에서 데이터를 다시 전달할 때 전체 고객 도메인 개체의 하위 집합 만 포함한다는 것입니다. 따라서 DTO를 Customer Factory로 보내면 Customer 객체를 다시 만들 때 고객의 일부만을 가질 수 있습니다.
그런 다음이 고객을 고객 저장소로 보내 저장하고 많은 데이터가 사라지게됩니다. 비극이 계속된다.
그래서 문제는이 문제를 어떻게 처리하겠습니까?
내 아이디어의 일부를 :
- 당신이 고객을로드 할 때 고객이 업데이트하고 다른
- 을 무시하는 의 일부를 나타내는 저장소에 대한 인수를 포함, 유지 정적 메모리 또는 세션에서 또는 어디서나 UI에서 DTO 중 하나를 수신하면 DTO와 관련된 부분 만 업데이트하십시오.
IMO, 둘 다 kludges입니다. 다른 좋은 아이디어가 있습니까?
@chadmyers : 여기에 문제가 있습니다.
엔티티 속성이 A, B, C 및 D.
DTO # 1
DTO # 2는 C 및 D.
속성을 포함을 가UI 묻는 B 및 C에 대한 속성을 포함 DTO # 1의 경우 저장소에서 엔티티를로드하고 DTO # 1로 변환하고 B와 C 만 채우고 UI에 제공합니다.
이제 UI는 B를 업데이트하고 DTO를 되돌려 보냅니다. 엔티티를 다시 작성하면 B와 C 만 채워집니다. DTO에 포함 된 모든 것이기 때문입니다.
이제 B와 C 만 채워진 엔티티를 A와 D null/blank로 저장하려고합니다. 저장소는 A와 D를 영속성에서 공백으로 업데이트해야하는지 또는 무시해야하는지 여부를 알 수있는 방법이 없습니다.
웹 응용 프로그램인지 여부는 중요하지 않습니다. 그리고 문제는 "the"DTO가 아니라 다른 것입니다. 그리고 그들 중 누구도 고객을 완전하게 묘사하지 못합니다. – moffdub
상태가 좋다면 partial DTO와는 다른 접근법을 사용할 수도 있고 그것이 내가 탐구 할 것이기 때문에 중요합니다. DTO가 완벽하게 설명하는지 여부는 중요하지 않습니다. – chadmyers
맞습니다. 한 가지 옵션은 DTO를 다시 디자인하는 것입니다. 나는 DTO의 디자인이 아마 내 손에 없다는 제약에 대해서는 언급하지 않았다. 별도의 DTO 클래스 대신 Customer 객체가 DTO 인터페이스를 구현할 것을 제안합니까? – moffdub