1
우리 애플리케이션에서는 데이터베이스 테이블에서 많은 항목을 업데이트해야하는 몇 가지 사용 사례가 있습니다. 우리는 데이터베이스와 상호 작용하는 데 사용되는 DataAccess 객체를 가지고 있습니다.일괄 업데이트 디자인 패턴
업데이트 코드는 다음과 같습니다.
String updateQuery = "UPDATE tbl SET column1=? WHERE column2=?";
for(i=0;;i++){
Map<Integer, Object> params=new HashMap<Integer, Object>();
params.put(1,"val"+i);
params.put(2,"val"+i);
DataAccess.addBatchParams(updateQuery,params);
}
DataAccess.executeBatch(updateQuery);
내부 DataAccess.addBatchParams (..)
public void addBatchParams(String query, Map<Integer,Object> params){
.. // preparedStatements contains all params passed till now.
..
if(preparedStatements.size() >= BATCH_SIZE){
executeBatch(query);
//flush preparedStatements as it has been written to db
}
..
..
}
내 관심사는 새로운 개발자가이 사용할 때마다, 그 그가가 executeBatch를 호출한다는 것을 알 수있는 방법이 없다는 점이다() 메서드를 사용하여 BATCH_SIZE보다 작은 마지막 몇 개 항목을 db로 플러시하는 모든 일괄 업데이트가 끝날 때까지 기다립니다. 이 작업을 수행하는 더 좋은 방법이 있습니까? 데이터베이스 배치 업데이트를 수행하기위한 디자인 패턴이나 다른 것이 있습니까?
도움을 주시면 감사하겠습니다.
네 .. 그게 효과가 있습니다. 그러나 이것 이외에 다른 방법이 있습니다. 다른 말로하면, 이것은 어떻게 모든 사람이 일괄 업데이트를 수행합니까? –
'spring-jdbc'는 이런 일괄 삽입을 확실히합니다. –