티스토리 뷰
전자정부프레임워크에서 ibatis 사용 시
엑셀로 데이터 업로드 등 대량의 데이터 처리를 위한 경우에 사용할 수 있다.
실제로 전 스프링3.0 버전과 ibatis 2.x 마지막 버전으로 작업하였습니다.
컨트롤러, 서비스의 구성은 어떻게 하든 상관이 없고
DAO만 다음과 같이 구성합니다.
public Object batchInsertData(final Vector dataVector) throws Exception {
// ibatis의 SqlExecutor을 사용
return getSqlMapClientTemplate().execute(
new SqlMapClientCallback<Object> () {
int dataCount = 0; // 저장한 데이터 건수
int batchCount = 0; // 30건씩 배치 처리한 건수
int totalCount = dataVector.size(); // 전체 데이터의 건수
/* (non-Javadoc)
* @see org.springframework.orm.ibatis.SqlMapClientCallback#doInSqlMapClient(com.ibatis.sqlmap.client.SqlMapExecutor)
*/
@Override
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
try {
// 배치처리 시작
executor.startBatch ();
Map<String, Object> eachData;
for (int idx = 0; idx < totalCount; idx++) {
eachData = dataVector.elementAt(idx);
// 데이터 저장
executor.insert("sqlQuery.batchInsert", eachData);
dataCount++;
// 저장건수 10건 마다 배치 처리
if ((dataCount % 30) == 0) {
executor.executeBatch();
batchCount++;
}
}
// 저장하지 않은 데이터 건수가 남아있다면 남은거 처리
if ((batchCount * 30) < totalCount) {
executor.executeBatch();
}
} catch (Exception e) {
throw new SQLException(e.getMessage());
}
return dataCount;
}
}
);
}
코드는 이렇게 되어 있으니까...
직접 사용해보면 아아~ 하고 감이 올겁니다.ㅋㅋㅋ
아아, 전 오라클 썼지만
아마도 다른 데이터베이스도 잘 지원될거라고 믿습니다?! ㅎㅎ
좋은 밤 되세요!!
- Total
- Today
- Yesterday
- 원격배포
- SEED 알고리즘
- 원격저장소
- tbexport
- 메이븐
- plugin execution not covered
- 티베로는 나에게 어울리지 않아
- 이클립스
- 엑스플랫폼
- tibero database export import
- sql log
- 설치
- 쿼리로그
- log4jdbc
- 사용자변경
- Publish+Over+SSH
- 서버
- Tibero
- svn 서비스 등록
- 스프링
- remote repository
- Oracle
- Spring
- tbimport
- 오라클
- tibero database backup
- 티베로
- 우분투
- maven
- 윈도우
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |