これはいくつかの方法でStream.of
を使用して簡単であるべきように思える、とまだ.... :)Java 8の方法は、com.google.common.collect.Iterables.partitionを使ってループしますか?
ここで私は改善したいコードは(myEntryIds
の長さがLong
数千項目のリストである)である:
List<MyEntityType> results = new ArrayList<>();
// batch up into groups of 1000
for (final List<Long> partitionedEntryIds :
com.google.common.collect.Iterables.partition(myEntryIds, 1000)) {
results.addAll(BeanConverter.convertList(
myJpaRepository.findAll(partitionedEntryIds)));
}
return results;
このコードは簡単でわかりやすく表示されます(完全修飾されたクラス名を除く)。なぜそれを変更したいのですか? –
FQCNは読みやすくするためのものでした。私は理由の包括的なリストを持っていませんが、私は "結果"の変更可能性を嫌います。これが並列性の候補になる可能性があるのかどうかは確かではありませんが、現在の状態は間違いありません。 – JoeG
並列処理はできません。同じトランザクションですべてのクエリを実行し、トランザクションがスレッドにバインドされ、エンティティがスレッドセーフではないようにします。また、collect(toList())は、変更可能なArrayListを使用して返します。 Sothereはその点で何の違いもありません。 –