bulkInsert 부분에서 마지막에 이상한? 부분이 있는것 같아서 문의드립니다.
80
작성한 질문수 11
마지막 부분에 getBatchSize()를 1000정도 권장해주셨는데요.
jdbcTemplate.batchUpdate()는 내부적으로 배치사이즈만큼 for문을 통해 반복하는것 같습니다. 즉 실제 처리해야할 대상 데이터가 1000개가 넘는다면 1000번째 이후 데이터부터는 INSERT가 안될거고요.
만약 1000개 미만이라면 예를 들어 500개밖에 없다면 501번째 반복때 java.lang.ArrayIndexOutOfBoundsException발생할것 같습니다.
만약 chunk가 최대 1000개정도가 적당하다라는 말씀이신거면 모르겠지만 1000으로 하드코딩해서 쓴다 라고 하신것처럼 와닿아서.. 오해의 소지가 있는것 같아 남깁니다~
private void bulkProcessSettlements(Map<Long, BigDecimal> settlementMap, LocalDate paymentDate) {
String sql = "INSERT INTO settlements (partner_id, total_amount, payment_date) VALUES (?, ?, ?)";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
//
}
@Override
public int getBatchSize() {
return 1000;
}
});
}
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
dlsrksrhk님, jdbcTemplate.batchUpdate()의 getBatchSize()에 대한 질문에 답변드리겠습니다.
getBatchSize() 메서드는 배치 처리를 위한 사이즈를 지정하는 부분입니다. 이 값은 처리할 객체의 수에 따라 유동적으로 설정될 필요가 있습니다. 언급하신 것처럼 실제 데이터의 수가 1000개 미만일 경우나 초과할 경우, 이 함수의 반환 값은 상황에 따라 조정되어야 합니다.
특히, 실제 settlementMap의 사이즈를 고려하여 동적으로 getBatchSize()를 설정하시길 권장합니다. 예를 들어:
@Override
public int getBatchSize() {
return settlementMap.size();
}
또한, 대량의 데이터를 처리할 때 적정한 배치크기를 정하는 것은 매우 중요합니다. 일반적으로 데이터베이스와의 연결 수, 메모리 사용 등을 고려하여 적절히 조정하여 성능을 최적화하는 것이 좋습니다. 이렇게 함으로써 ArrayIndexOutOfBoundsException 같은 예외가 발생하지 않도록 예방할 수 있습니다.
해당 설정을 상황에 맞게 조정하여 사용하시면 더 나은 성능과 안정성을 제공할 수 있을 것입니다. 도움이 되셨길 바랍니다!
자세한 내용은 관련 문서를 참고하실 수 있습니다:
Spring Boot JDBC Template
changeTeam 메서드 질문
0
7
1
"컴파일 시점에 없는 값을 어떻게 참조할 것인가?" 섹션
1
21
2
실기 공부 시작 하려고 하는데요
0
29
2
김영한로드맵으로 백엔드개발자가 될 수 있나요?
0
24
1
테스트 관련 질문!
0
23
2
안녕하세요, 강좌 5의 피그마 파일은 어디서 볼 수 있나요?
0
36
2
결재했는데도 강좌가 안보입니다.
0
31
1
백엔드, 프론트엔드 충돌 미리 방지 관련
0
27
1
handleBindException 의 기대의도가 방향이 맞는지 궁금합니다.
0
25
2
문제2번
0
44
2
settings.local.json에 어떻게 mcp 관련된 allow가 있나요?
0
25
2
페이징 처리에서 offset/limit에 대한 질문
1
28
1
인텔리제이 오류
0
34
1
안녕하세요 질문있습니다.
0
29
2
프로젝트 의존 관계
0
34
2
Mockup 이미지 만들기에 대해 질문이 있습니다.
1
32
2
노션 링크 문의
0
36
2
문제 풀이 접속 오류
0
39
2
섹션3 강의 누락?
0
67
1
팰월드 스트림..?
1
248
1
질문 답변 부탁드립니다
0
166
1
해상도가 720p 까지 가능해서 화면이 흐리네요.
0
158
1
pg 파라미터가 이제는 없어진다고 하는데 업데이트 해주시나요?
0
214
1
paymentProcess() 결제내역 남기기
0
173
0





