2017-05-10 11 views
0

APIプロジェクトには、クライアントにデータを取得して提供するパターンが多数あることがわかります。 Controller <-> Service <-> Daoパターンはこれらのパターンの1つです。サービスレイヤの戻りオブジェクトタイプ

サービスレイヤまたはサービスレイヤのオブジェクトから任意のタイプのオブジェクトを戻すとよいですか?返すオブジェクトは関連エンティティでなければなりませんか?

たとえば、User,UserService,UserDaoです。 UserServiceはUserまたは任意のタイプのオブジェクトを返す必要がありますか?

サービス層で論理演算を行うと、他のオブジェクトを戻り値の型として使用する必要があります。

このケースのベストプラクティスは何ですか?

+0

一般的に、サービスはそれが意味するものを返します。ユーザーまたはリストを返すUserServiceのようにします。エンティティをDTOに変換するトランスフォーマをオプションで持つことができます。エンティティまたはエンティティを取得し、DTOに変換するtansformerを呼び出すのはサービスです。 –

答えて

1

広く受け入れられている慣例では、すべてのビジネスロジックが含まれており、お客様の場合のようにデータ転送オブジェクト(DTO)/ビジネスオブジェクトを返すサービスが必要です。サービスは、DAO、その他のデータソースを呼び出してエンティティを取得し、マッパ/コンバータのユーティリティを使用してエンティティをDTOオブジェクトに変換することができます。

Serviceから返されたDTOオブジェクトは、ResponseEntity(Spring MVCの場合)に埋め込まれ、コントローラから返されます。

これにより、Web、サービス、データアクセスなどの3つのレイヤーにアプリケーションが分割されます。これは、Separation of Concerns、Single Responsibilityなどの設計原則をサポートします。これにより、単体テストやコード管理も簡単になります。

+0

良い説明、ありがとうございます!私は他のユーザーからより多くの提案を読みたいと思います。 – Tugrul

関連する問題