7

DTOオブジェクトをサービスレイヤーに渡すのは悪い習慣ではありませんか?

今のところ、私のサービス レイヤー メソッドは次のようになります。

public save(MyEntity entity);

DTO からビジネス エンティティ (MyEntity) への値のマッピングは、プレゼンテーション層で行われます

しかし、メソッドの署名をこれに変更したい:

public save(MyEntityDTO dto, String author);

その後、DTO からビジネス エンティティへのマッピングがサービス層で行われます。

編集: DTOからビジネスオブジェクトにマッピングするときに休止状態のセッションを開く必要があるため、エンティティのすべての変更が自動的にフラッシュされるため、それが必要です。

4

3 に答える 3

15

DTOオブジェクトをサービスレイヤーに渡すのは悪い習慣ではありませんか?

DTO オブジェクトをサービス層に渡すだけでなく、ビジネス エンティティの代わりに DTO オブジェクトをサービス層に渡す必要があります。

サービスは DTO を受け取り、それらをビジネス エンティティにマップし、リポジトリに送信する必要があります。また、リポジトリからビジネス エンティティを取得し、それらを DTO にマップし、DTO を応答として返す必要があります。したがって、ビジネス エンティティがビジネス レイヤーから抜け出すことはなく、DTO だけが抜け出します。

同様の質問に対する完全な回答はこちらをご覧ください。

于 2015-10-15T18:09:27.883 に答える
0

大丈夫です。すべての標準的な 3 層アーキテクチャがそれを行います。Dataaccess はデータ、ビジネス マップを取得して操作し、プレゼンテーションはそれを提示します。大丈夫ではありませんが、犯罪ではないと言われているように、データアクセスモデルをプレゼンテーションに渡すことは、この時点ではビジネスモデルを渡す必要があります。ところで。「DTO」は何でも意味します。ビジネス レイヤー モデルは DTO であり、データ アクセス モデルは DTO である可能性があります。DTO は通常、C# の POCO です。通常、データベース エンティティを表すデータアクセス モデルと、アプリケーションでデータを渡すドメイン モデルがあります。通常、ドメイン モデルは DTO (または POCO と呼びます) です。つまり、Microsoft のスピーチでは、それらは完全にシリアル化可能であるため、Microsoft .net コンポーネントに渡すことができます。それらをxml、jsonなどにもシリアル化できます...

于 2013-11-20T10:45:57.663 に答える