O DTO como um conceito (objetos cuja finalidade é coletar dados a serem retornados ao cliente pelo servidor) certamente não está desatualizado.
O que é um pouco desatualizado é a noção de ter DTOs que não contêm lógica alguma, são usados apenas para transmitir dados e "mapeados" de objetos de domínio antes da transmissão para o cliente, e lá mapeado para ver os modelos antes de passá-los para a camada de exibição. Em aplicativos simples, os objetos de domínio geralmente podem ser reutilizados diretamente como DTOs e passados diretamente para a camada de exibição, de modo que haja apenas um modelo de dados unificado. Para aplicativos mais complexos, você não deseja expor todo o modelo de domínio ao cliente, portanto, é necessário um mapeamento dos modelos de domínio para os DTOs. Ter um modelo de visualização separado que duplique os dados dos DTOs quase nunca faz sentido.
No entanto, a razão pela qual essa noção está desatualizada e não simplesmente errada é que algumas estruturas / tecnologias (principalmente as mais antigas) exigem isso, pois seus modelos de domínio e visão não são POJOS e, em vez disso, vinculados diretamente à estrutura.
O mais notável é que os Entity Beans no J2EE anteriores ao padrão EJB 3 não eram POJOs e, em vez disso, eram objetos proxy construídos pelo servidor de aplicativos - simplesmente não era possível enviá-los ao cliente, portanto, você não tinha escolha camada DTO separada - era obrigatória.