コンバージョン:ドメインオブジェクト<-> dtoはどこで行うべきですか?

StackOverflow https://stackoverflow.com/questions/2438280

質問

ドメインレイヤーまたはデータアクセスレイヤー?

役に立ちましたか?

解決

DTOの主な動機は、別のレイヤー(通常、プレゼンテーションレイヤー)に合わせたインターフェイスを提示することです。たとえば、データ入力画面では、注文などからの一部のビットに加えて、ユーザーオブジェクトからのデータのビットが必要になる場合があります。その場合、DTOのドメインは、プレゼンテーションレイヤーが呼び出すレイヤー、つまり、通常は通常、発生する必要があります。 「サービス」レイヤー。

のようなライブラリがあります ドーザー ドメインモデルとDTO間の変換のうなり声作業を自動化する。

重要なテイクアウトは、DTOSがより豊富なドメインモデルオブジェクトからデータ(ビジネスロジックではない)を抽象化することを意図していることです。したがって、DTOはできるだけ早くドメインオブジェクトに戻し、できるだけ早く(サービスレイヤーで)アプリケーションレイヤーの残りの部分を変換する必要があります。より豊富なドメインオブジェクト(データとビジネスロジック)で動作する場合があります

他のヒント

私はDTOのファンではありませんが、データレイヤーではしないと言います。データレイヤーは、モデルオブジェクトとその持続性を扱います。なぜDTOを入れることで他のレイヤーと組み合わせるのですか?私はそれらを他のどこか、おそらくサービスとUI層の間で、それらが作成された場所と使用されている場所の間の境界を越えた時点でマッピングします。

これをMVCコンテキストに置くと、コントローラーとサービスレイヤーの両方がある場合は、コントローラーに入れる必要があります。これにより、DTOがビューレイヤーに近づき、サービスレイヤーがドメインオブジェクトのみで再生できるようになり、他のモデルとの混乱の可能性を回避できます。

DTO自体は実際にはMVCモデルです(ここで説明しています: https://stackoverflow.com/a/1058186).

以下は、コントローラー、サービスレイヤー、DTOの概念を一緒にマッシュする推奨チュートリアルです(Spring Frameworkを使用してJavaでは、他のプラットフォームでも概念も明確です):https://www.baeldung.com/Entity-to-and-from-for-a-java-spring-application

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top