는 .... 것 같다 :) 여기 com.google.common.collect.Iterables.partition을 사용하여 Java 8 방식으로 반복 하시겠습니까? 이 아직 어떤 방식으로 <code>Stream.of</code>를 사용하여 간단하고 있어야처럼
내가 개선하고자하는 코드 (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는 그 점에서 어떤 차이도 없을 것입니다. –