대용량 파일을 DB로 넣어야 하는데
- 작성자 :
- 김*훈
- 작성일 :
- 2014-08-27 13:44:32
- 조회수 :
- 802
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
excuteBacth() 이런거 없나여
배치가 절실합니다.
아니면 다른 방법이 있나요? 그냥 건바이 건 insert해도 되나여?
배치가 절실합니다.
아니면 다른 방법이 있나요? 그냥 건바이 건 insert해도 되나여?
A
안녕하세요. 김영훈님.
대용량 배치 처리가 필요하신 경우라면, 실행환경에서 제공하는 배치 프레임워크 기능을 활용하시면 되실 것 같습니다.
다만, 일반적인 Data Access 상의 batch 방식이 아니라 Job 및 Step이라는 자체 설정 기능을 통해 관리하는 방식으로 배치 프레임워크 자체에 대한 이해가 필요하십니다.
iBatis와 같은 Data Access에서의 간단한 배치의 구현은 사용하시는 다음과 같은 형태로 구현하실 수 있습니다. (iBatis 예제)
public Integer batchInsertEmp(final String queryId, final List<EmpVO> list) {
return (Integer) getSqlMapClientTemplate().execute(
new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
Iterator<EmpVO> itr = list.iterator();
executor.startBatch();
while (itr.hasNext()) {
executor.insert(queryId, itr.next());
}
// autoboxing
return executor.executeBatch();
}
});
}
그럼, 즐거운 하루되십시오.
감사합니다.
대용량 배치 처리가 필요하신 경우라면, 실행환경에서 제공하는 배치 프레임워크 기능을 활용하시면 되실 것 같습니다.
다만, 일반적인 Data Access 상의 batch 방식이 아니라 Job 및 Step이라는 자체 설정 기능을 통해 관리하는 방식으로 배치 프레임워크 자체에 대한 이해가 필요하십니다.
iBatis와 같은 Data Access에서의 간단한 배치의 구현은 사용하시는 다음과 같은 형태로 구현하실 수 있습니다. (iBatis 예제)
public Integer batchInsertEmp(final String queryId, final List<EmpVO> list) {
return (Integer) getSqlMapClientTemplate().execute(
new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
Iterator<EmpVO> itr = list.iterator();
executor.startBatch();
while (itr.hasNext()) {
executor.insert(queryId, itr.next());
}
// autoboxing
return executor.executeBatch();
}
});
}
그럼, 즐거운 하루되십시오.
감사합니다.