Spring MVCドメインのオブジェクトを扱う最善の実践
-
21-08-2019 - |
質問
可能と単純泉MVCコントローラーの情報を受信したIDのドメインのオブジェクトです。コントローラを呼び出するサービスはなんとかそのドメインのオブジェクトです。
していますので"変換"のIDのオブジェクトのドメインのドメインのオブジェクトを読み込みからのデータベース?ことは避けなければならないの幅を広げることが出来ます。そのサービスのメソッドのインターフェイスを使用しているが受け入れ ID の ドメインのオブジェクト 代わりにドメインのオブジェクトそのものです。でのインタフェースをサービスアのキャンセル手数料無い場合、ドメインのオブジェクトとしてパラメータとします。
については、どのようにお考えて共通に使用。どうでしょ解決す。
解決
コントローラは、サービス層に、idを伝承して、HTTP応答の残りの部分をレンダリングするために必要なものは何でも取り戻す必要があります。
だから、 -
Map<String,Object> doGet (@RequestParam("id") int id) {
return serviceLayer.getStuffByDomainObjectId(id);
}
それ以外はただ全く永続気にはならないのWeb層を、汚染されようとしています。サービス層の全体の目的は、ドメインオブジェクトを取得し、自社のビジネスロジックを実行するためにそれらを伝えることです。そのため、データベース・コールのようなサービス層に存在する必要があります -
public Map<String,Object> getStuffByDomainObjectId(int id) {
DomainObject domainObject = dao.getDomainObjectById(id);
domainObject.businessLogicMethod();
return domainObject.map();
}
他のヒント
私のプロジェクトで、私は、サービス層を使用しました
class ProductService {
void removeById(long id);
}
私は、このサービスは、リモートまたはローカルであるかどうかに依存だと思います。原則として私は、可能な場合は、リモートサービスにIDを渡すためにしようとしますが、ローカルなもののためにオブジェクトを好むます。
この背後にある理由はそれだけで(Hibernateはこれをキャッシュとローカルサービスのためにミュートポイントかもしれませんが)、リモートサービスに絶対に必要なものを送信し、ローカルサービスのためのDAOへの複数の呼び出しを防止することにより、ネットワークトラフィックを減少させることです。