insert 및 update시 list parameter 질문입니다.
- 작성자 :
- a*y
- 작성일 :
- 2018-05-02 22:15:57
- 조회수 :
- 2,774
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
batch insert가 따로없는거같고
insert를 object로 받는데 list타입을 insert하면 알아서 batch로 들어가나요?
아니면 EgovAbstractDAO를 상속받고 batch를 새로 만들어야하나요
@SuppressWarnings("rawtypes")
private int batch(final String queryId, final List list) throws Exception{
try{
sqlMapClient.startTransaction();
sqlMapClient.startBatch();
for(Object obj : list){
update(queryId, obj);
}
sqlMapClient.executeBatch();
sqlMapClient.commitTransaction();
}catch(Exception e){
throw e;
}finally{
sqlMapClient.endTransaction();
}
return 0;
}
일단 batch는 위처럼 만들었습니다.
insert를 object로 받는데 list타입을 insert하면 알아서 batch로 들어가나요?
아니면 EgovAbstractDAO를 상속받고 batch를 새로 만들어야하나요
@SuppressWarnings("rawtypes")
private int batch(final String queryId, final List list) throws Exception{
try{
sqlMapClient.startTransaction();
sqlMapClient.startBatch();
for(Object obj : list){
update(queryId, obj);
}
sqlMapClient.executeBatch();
sqlMapClient.commitTransaction();
}catch(Exception e){
throw e;
}finally{
sqlMapClient.endTransaction();
}
return 0;
}
일단 batch는 위처럼 만들었습니다.
A
안녕하십니까,
표준프레임워크센터입니다.
우선 대용량 insert등의 DB작업을 하실려는듯 한데요.
DAO에서 다음과 같이 sqlMapClient를 가져오는게 가능하니 참고하시구요.
SqlMapClient smc = myTestDAO.getSqlMapClient();
SqlMapClient를 받아서
다음 샘플을 참고하셔서 구현하시면 될듯합니다.
전달 대상이 되는 list는 담겨있는 형태에 따라 처리가 필요하실듯 한데요.
vo면 DAO로 직접 전달도 가능할듯 합니다.
다음 코드 샘플을 참고하시구요.
smc.startTransaction();
smc.startBatch();
for (int i = 0; i <= 10000; i++) {
vo.setDetailStatsKind("BBST"+StringUtils.leftPad(i+"", 5, "0"));
smc.insert("MyTestDAO.summaryBbsStats", vo);
// 1000건 단위로 끊어서 배치 실행
if (i % 1000 == 0) {
smc.executeBatch();
smc.startBatch();
}
}
smc.executeBatch();
smc.commitTransaction();
smc.endTransaction();
감사합니다.
표준프레임워크센터입니다.
우선 대용량 insert등의 DB작업을 하실려는듯 한데요.
DAO에서 다음과 같이 sqlMapClient를 가져오는게 가능하니 참고하시구요.
SqlMapClient smc = myTestDAO.getSqlMapClient();
SqlMapClient를 받아서
다음 샘플을 참고하셔서 구현하시면 될듯합니다.
전달 대상이 되는 list는 담겨있는 형태에 따라 처리가 필요하실듯 한데요.
vo면 DAO로 직접 전달도 가능할듯 합니다.
다음 코드 샘플을 참고하시구요.
smc.startTransaction();
smc.startBatch();
for (int i = 0; i <= 10000; i++) {
vo.setDetailStatsKind("BBST"+StringUtils.leftPad(i+"", 5, "0"));
smc.insert("MyTestDAO.summaryBbsStats", vo);
// 1000건 단위로 끊어서 배치 실행
if (i % 1000 == 0) {
smc.executeBatch();
smc.startBatch();
}
}
smc.executeBatch();
smc.commitTransaction();
smc.endTransaction();
감사합니다.