No está en desuso. Depende de la arquitectura de la aplicación si el patrón DTO debe usarse o no. Por ejemplo, cuando desarrolle servicios web (utilizando JAX-WS o JAX-RS), debe enviar DTO a través de sus métodos web para que una aplicación cliente C# o Python pueda consumirlo, y su método web no debe devolver un objeto cuya clase tenga Anotaciones de Hibernate, recuerde que en otros idiomas la Entidad no se creará con esas anotaciones u otra lógica de negocios dentro.
EDITAR (Basado en su comentario): Eso depende de la arquitectura del software. Por ejemplo, estoy trabajando en un proyecto SOA y utilizamos DTO para la capa de servicios y la capa de presentación. Más profundo aún, incluso utilizamos DTO para manejar la comunicación de bases de datos dentro de los servicios, utilizamos solo SP para comunicarnos con DB, por lo que no puede trabajar Hibernate ni ninguna otra herramienta ORM, podríamos usar Spring DAO y ese framework también usa DTO. Puede encontrar muchos patrones de DTO en muchas aplicaciones hoy en día.
Más información que sería grande para esta pregunta:
EDIT 2: Otra fuente de información que explique la razón principal para el uso de diseño de DTO, explica por Martin Fowler
Conclusión: DTO no un son anti patrón Los DTO están destinados a ser utilizados solo cuando necesita pasar datos de un subsistema a otro y no tienen una forma predeterminada o estándar para comunicarse.
Sí, en tal caso, entiendo el uso de DTO. Está enviando resultados en un DTO. Pero para el uso de aplicaciones internas, las DTO no son muy útiles, ¿verdad? – Thihara
@Thihara respuesta editada en base a su comentario –
De acuerdo con su primera versión, es un patrón anti utilizado para evitar el hecho de que los beans de entidades no eran serializables. Con un ORM, ese problema principal no existe. – Thihara