コントローラ/サービス/DAO アーキテクチャ上で Java で開発された従来の注文管理アプリケーションがあります。データ オブジェクトは、データベース内のデータを表す POJO です。基本的に、データベース内の 1 つのテーブルをマップする 1 つのクラスがありますが、ORM やエンティティ メカニズムは使用しません。これらのデータ オブジェクトはすべてのレイヤー間で渡され、Web GUI を介して注文を作成/変更/取得します。このアプリケーションには、外部システムが SOAP を介してこれらの注文を管理できるようにする WebService レイヤーもあります。WebService レイヤーは、サービス レイヤーに依存して、WebService と GUI の間で同じロジックが使用されるようにします。
WebServices API を可能な限り安定させようとしていますが、現在データ オブジェクトを WebService メソッドのパラメーターとして使用しているため、その API は頻繁に変更される可能性があります (少なくとも、データベース内のフィールドを変更するたびに)。 . さらに、データベース構造の複雑さを WebService クライアントに隠したいと考えています。たとえば、データベースには、クライアントから隠したい複数のフィールドが含まれています。
具体的な質問:
クライアント API を介してデータベース構造とフィールドを非表示にするために一般的に使用される設計パターンはどのようなものですか?
パブリック メソッドのパラメーターと内部データ オブジェクトの間の "マッピング" を処理するための適切な方法はありますか?
データ転送オブジェクトは私の質問に対する答えですか?