web-dev-qa-db-ja.com

IO内部Java 8ストリーム)

タイトルで質問する例:

List<UUID> ids = dao1.getContactsOfUser(userId);
List<String> contact_names = ids.stream
    .map(uid -> dao2.getContactByUid(uid)) //is it ok? 
    .filter(contact -> contact.getPhone!=null)
    .map(contact -> contact.getFullName())
    .collect(Collectors.toList());

私はそれが機能することを知っています、そしてうまく機能することさえあります、しかし障害はありませんか?

4
Ivan Zelenskyy

IO inside Java 8ストリームを実行しても大丈夫ですか?[〜#〜] ok [〜 #〜]

"OK"という意味で機能しますかはいなぜそうすべきではないのですか?.

"OK"の意味でI:いいえ!

つまり、推奨されません。最初にデータベースへの呼び出しでユーザーを取得してから、n以上のリクエストで連絡先を取得するのは意味がありません。しましょう?

連絡先の名前を結合してクエリを強化し、必要な情報を含む集計列を作成します。

2
Thomas Junk