[JAVA8] 람다식을 이용한 Batch Insert 구현하기


Java 8 에서 람다식을 이용한 Batch Insert 구현하기

  조회한 데이터의 사이즈가 커서 일정 단위로 잘라 넣어야 할 일이 생겼다.
람다식을 이용한 메서드를 만들어 사용하였으며, 간결하다고 생각되어 해당 메서드를 
공유해 본다.

public static <T>Stream <List<T>>  batches (List<T> source, int length) {
  if (length <= 0) throw new IllegalArgumentException("length = " + length);
  int size = source.size();
  if (size <= 0) return Stream.empty();
  int fullChunks = (size - 1) / length;
  return IntStream.range(0, fullChunks + 1).mapToObj(
          n -> source.subList(n * length, n == fullChunks ? size : (n + 1) * length));
}
 (코드 스타일이 적용이 되지 않아 실제 구현된 메서드는 텍스트로 표현)
// 사용 예)

public static void main(String[] args) { 

 List list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14); 
 System.out.println("By 3:"); batches(list, 3).forEach(System.out::println); 
 System.out.println("By 4:"); batches(list, 4).forEach(System.out::println); 

}







refs : 

댓글

이 블로그의 인기 게시물

[JDBC] 쿼리 후에 ResultSet 에 데이터가 있는지 확인하는 방법

[Android] Android 로깅 시 isLoggable() 메서드 사용

[Spring] @PropertySource and Environment 사용시 Property 값이 null 로 들어오는 경우