非推奨ではありません。DTOパターンを使用するかどうかは、アプリケーションアーキテクチャによって異なります。たとえば、(JAX-WSまたはJAX-RSを使用して)Webサービスを開発する場合、C#またはPythonクライアントアプリケーションがDTOを使用できるように、Webメソッドを介してDTOを送信する必要があります。また、Webメソッドは、クラスが持つオブジェクトを返さないようにする必要があります。 Hibernateアノテーション、他の言語よりもエンティティはそれらのアノテーションまたは他のビジネスロジックを内部に使用して作成されないことを覚えておいてください。
編集(あなたのコメントに基づく):それはソフトウェアアーキテクチャに依存します。たとえば、私はSOAプロジェクトに取り組んでおり、サービス層とプレゼンテーション層にDTOを使用しています。さらに深く、サービス内のデータベース通信を処理するためにDTOを使用し、DBとの通信にSPのみを使用するため、Hibernateやその他のORMツールはそこで機能できず、Spring DAOを使用でき、そのフレームワークもDTOを使用します。最近の多くのアプリケーションで多くのDTOパターンを見つけることができます。
この質問に最適な詳細情報:
編集2:マーティンファウラーによって説明された、DTOの設計を使用する主な理由を説明する別の情報源
結論:DTOはアンチパターンではありません。DTOは、あるサブシステムから別のサブシステムにデータを渡す必要があり、通信するためのデフォルトまたは標準の方法がない場合にのみ使用することを目的としています。