블로그 이미지
Max.

calendar

    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    

Notice

2008.08.26 22:03 이전글(~2009)

SimpleJdbcTemplate를 이용해서 일괄처리를 할수 있는 메서드를 제공하는데 그것이 batchUpdate()메서드이다. 여기서 일괄처리는 여러개의 row를 insert,update,delete하는것을 말한다. 간단히 다음과 같은 예제를 통해서 이해할수 있다.

public class JdbcActorDao implements ActorDao {
  private SimpleJdbcTemplate simpleJdbcTemplate;
  public void setDataSource(DataSource dataSource) {
    this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
  }
  public int[] batchUpdate(final List<Actor> actors) {
    SqlParameterSource[] batch = SqlParameterSourceUtils.createBatch(actors.toArray());
    int[] updateCounts = simpleJdbcTemplate.batchUpdate(
    "update t_actor set first_name = :firstName, last_name = :lastName where id = :id",batch);
    return updateCounts;
}
// ... additional methods
}

SqlParameterSourceUtils.createBatch에 각기 다른 도메인 객체 List를 batch 변수에 저장하고 batchUpdate로 한꺼번에 업데이트하는 예제이다. 물론 아래와 같이 "?"를 이용해서 구현할수도 있다.

public class JdbcActorDao implements ActorDao {
private SimpleJdbcTemplate simpleJdbcTemplate;
public void setDataSource(DataSource dataSource) {
  this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
public int[] batchUpdate(final List<Actor> actors) {
  List<Object[]> batch = new ArrayList<Object[]>();
  for (Actor actor : actors) {
  Object[] values = new Object[] {
    actor.getFirstName(),
    actor.getLastName(),
    actor.getId()};
    batch.add(values);
  }
  int[] updateCounts = simpleJdbcTemplate.batchUpdate(
  "update t_actor set first_name = ?, last_name = ? where id = ?",batch);
  return updateCounts;
}

이것은 보통

while (iter.hasNext()) {
    jdbcTemplate.update(....);
}

형식일때 자원을 낭비하지 말고, 효과적으로 사용하라고 만들어 놓은것이다.

신고

'이전글(~2009)' 카테고리의 다른 글

[SpringJDBC] SimpleJdbcInsert  (0) 2008.08.26
[SpringJDBC] SimpleJdbcTemplate  (0) 2008.08.26
[SpringJDBC] Batch  (0) 2008.08.26
[SpringJDBC] NamedParameterJdbcTemplate  (0) 2008.08.26
[SpringJDBC] JdbcTemplate  (0) 2008.08.26
[SpringJDBC] 개요  (0) 2008.08.26
posted by Max.

티스토리 툴바