DDD (Domain Driven Design)

Boa tarde a todos,

Estava estudando o DDD (Domain Drive Design)…

Percebi que a camada de negócios deve ser um reflexo da realidade, para que o sistema possa evoluir de maneira mais fácil (flexibilidade) conforme a regra de negócios do cliente tb muda…
Por isso temos as entidades… Por exemplo Funcionario, Departamento, etc…

A duvida que eu tenho é a seguinte:
Vamos supor que eu tenha que exibir todos os funcionários em um JSP… eu deveria criar um DTO do Funcionario e “mandar” para a camada de visão? ou posso mandar o proprio objeto de negócio (o que na minha opinião é mais pratico, já que eu não preciso duplicar código no DTO)?
Pois eu li o Artigo do Phillip Calçado e do Martin Fowler
http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs


onde eles dizem que não é bom criar DTO´s… e por isso estou confuso…

O que vcs acham… para exibir as entidades em tela a camada de visão pode ter contato com as entidades… ou vou ter que duplicar o código criando um DTO para cada entidade?

Agradeço a ajuda de todos!!!

Felipe Regalgo

A partir do momento que objetos de negócio viraram simples POJOS, não tem problema algum utiliza-los nesta transição.

A pergutna inicial é: rpa que você teria DTOs em primeiro lugar?

Então eu tb penso assim…

Mas pensando no lado negativo disso, imagine se eu tiver 50 JSP´s mostrando os dados desse Funcionario… Ai eu vou e faço uma refatoração no codigo (talvez mudando metodos de uma classe pra outra, etc)… vou ter que verificar nos 50 JSP´s pra ver se não deu nenhum problema, ou até mesmo para ajusta-los a nova mudança!!!
Talvez se eu criasse DTO´s para isso eu não teria esse problema pois os DTO´s não mudariam…
O que vcs acham disso… faz sentido???

obrigado pela atenção…

Não vejo sentido nisso. Se você mudar sua classe teoricamente deveria mudar o DTO também, senão aí que seu sistema seria uma bagunça completa.

Se você só quer restringir o métodos que vão poder ser usados nas camadas view, use interfaces se for realmente necessário. Esqueça DTO, dificilmente você realmente vai precisar deles.

[]'s

Rodrigo Auler

Esse é um Pattern para trafegar um volume grande de dados encapsulados, para reduzir latência, utilizado em cenários de aplicações distribuídas.

De qualquer forma, na camada Web você estaria lidando com pojos e não DTOs, VOs ou qualquer coisa do tipo.

http://fragmental.com.br/blog/?p=358

[quote=Kenobi]
De qualquer forma, na camada Web você estaria lidando com pojos e não DTOs, VOs ou qualquer coisa do tipo. [/quote]

Cuidado: NADA impede (aliás, geralmente assim que é feito) que um DTO, VO, whatever seja POJO.

[quote=pcalcado][quote=Kenobi]
De qualquer forma, na camada Web você estaria lidando com pojos e não DTOs, VOs ou qualquer coisa do tipo. [/quote]

Cuidado: NADA impede (aliás, geralmente assim que é feito) que um DTO, VO, whatever seja POJO.[/quote]

Sim, realmente coloquei errado, não pojos e sim objetos de domínio.