タイトルで質問する例:
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());
私はそれが機能することを知っています、そしてうまく機能することさえあります、しかし障害はありませんか?
IO inside Java 8ストリームを実行しても大丈夫ですか?[〜#〜] ok [〜 #〜]。
"OK"という意味で機能しますか:はいなぜそうすべきではないのですか?.
"OK"の意味でI:いいえ!
つまり、推奨されません。最初にデータベースへの呼び出しでユーザーを取得してから、n以上のリクエストで連絡先を取得するのは意味がありません。しましょう?
連絡先の名前を結合してクエリを強化し、必要な情報を含む集計列を作成します。