9

休止状態のエンティティをプレゼンテーション レイヤーまで取得することをお勧めしますか? またはエンティティのすべてのプロパティを値オブジェクトにマップする必要があり、値オブジェクトは UI に使用されますか?

両方のアプローチの長所と短所を教えてください。

いつ何を使うべきですか?

4

2 に答える 2

13

DTO と呼ばれるものは、ORM のエンティティです。これらは通常、ビジネス ロジックを含むドメイン モデルの一部であり、ほとんどの場合、個々のビューをレンダリングするために必要なデータよりも多くのデータが含まれています。私の個人的な経験則

DAL とビューの間に転送レイヤーがなく、ビジネス ロジックがほとんどない場合は、ビューでエンティティを使用します。

  • 利点:
    • 1 つのモデル
    • モデル間でマッピングする必要はありません
    • 遅延読み込みの使いやすさ
  • 短所:
    • モデルの各変更はビューの変更を意味します
    • 転写層の多くの欠点は以下を参照してください

転送レイヤーがある場合、および/またはビューデータがエンティティと異なる場合、または多くの異なるエンティティを集約する場合に、エンティティを DTO にマップします。

  • 利点:
    • モデルに変更があった場合、DTO/ビューを変更する必要はありません
    • 問題が山積している回線経由でエンティティを送信することは避けてください (遅延読み込みの例外、大量の不要なデータの送信、重要な情報の公開など)。
    • モデルの責任 (シリアル化) が少ないため、再利用が容易になります (バックエンド処理など)。
  • 短所:
    • 書くべきより多くのクラス
    • エンティティを DTO に変換するコード
于 2012-07-04T18:52:47.323 に答える