Back/Mybatis
Mybatis 대용량 insert, update (ExecutorType.BATCH)
밍꿔
2020. 3. 17. 16:10
반응형
대용량 데이터 insert, update 진행 시 ExecutorType.BATCH옵션을 사용하면
업로드 시간을 좀 더 단축 시킬 수 있다.
// DI SqlSessionFactory 주입
@Autowired private SqlSessionFactory sqlSessionFactory;
---생략---
public boolean dataUpload(VoTestInfo voTestInfo){
boolean result = true;
try {
SqlSession sqlSession = sqlSessionFactory.openSession(ExecutorType.BATCH);
try {
sqlSession.insert("xmlNamespace.queryId", voTestInfo);
} catch(IOException e){
result = false;
sqlSession.rollback();
e.printStackTrace();
} finally {
sqlSession.close();
}
} catch (Exception e) {
e.printStackTrace();
sqlSession.rollback();
result = false;
} finally {
sqlSession.flushStatements();
sqlSession.close();
}
return result;
}
16번라인의 sqlSession.insert("xmlNamespace.queryId", voTestInfo); 에서
첫번째 인자값은 실행될 쿼리가 있는 xml의 namespace명 + 쿼리ID
두번째 인자값은 파라미터
추가로 Mybatis ForEach를 사용한다면 더 단축이 가능하다.
반응형