블로그 이미지
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  

Notice

'SimpleJdbcTemplate'에 해당되는 글 1

  1. 2008.08.26 [SpringJDBC] SimpleJdbcTemplate
2008.08.26 22:04 이전글(~2009)

SimpleJdbcTemplate은 java5 이상 버전에서만 사용할수 있다. JdbcTemplate를 래핑하고 java5의 특징(varargs,autoboxing)을 살려서 구현할수 있다.
JdbcTemplate로 구현할때와 SimpleJdbcTemplate로 구현할때의 클래스를 비교해 보자.

// classic JdbcTemplate-style...
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
 this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public Actor findActor(long id) {
 String sql = "select id, first_name, last_name from T_ACTOR where id = ?";
 RowMapper mapper = new RowMapper() {
  public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
  Actor actor = new Actor();
  actor.setId(rs.getLong("id"));
  actor.setFirstName(rs.getString("first_name"));
  actor.setLastName(rs.getString("last_name"));
  return actor;
 }

};
// notice the cast, the wrapping up of the 'id' argument
// in an array, and the boxing of the 'id' argument as a reference type
return (Actor) jdbcTemplate.queryForObject(sql, mapper, new Object[] {Long.valueOf(id)});
}

 SimpleJdbcTemplate를 이용하면 아래와 같다.

// SimpleJdbcTemplate-style...
private SimpleJdbcTemplate simpleJdbcTemplate;
public void setDataSource(DataSource dataSource) {
 this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
public Actor findActor(long id) {
 String sql = "select id, first_name, last_name from T_ACTOR where id = ?";
 ParameterizedRowMapper<Actor> mapper = new ParameterizedRowMapper<Actor>() {
  // notice the return type with respect to Java 5 covariant return types
  public Actor mapRow(ResultSet rs, int rowNum) throws SQLException {
   Actor actor = new Actor();
   actor.setId(rs.getLong("id"));
   actor.setFirstName(rs.getString("first_name"));
   actor.setLastName(rs.getString("last_name"));
   return actor;
  }
 };
 return this.simpleJdbcTemplate.queryForObject(sql, mapper, id);
}


ParameterizedBeanPropertyRowMapper를 이용하여 좀더 단순화 하여 class로 매핑시킬수도 있다.

// SimpleJdbcTemplate-style...
private SimpleJdbcTemplate simpleJdbcTemplate;
public void setDataSource(DataSource dataSource) {
 this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
}
public Actor findActor(long id) {
 String sql = "select id, first_name, last_name from T_ACTOR where id = ?";
 return this.simpleJdbcTemplate.queryForObject(sql,  ParameterizedBeanPropertyRowMapper.newInstance(Actor.class), id);
}

만약 쿼리 결과값이 기본객체에 해당한다면 다음과 같을 것이다.

// ParameterizedBeanPropertyRowMapper로 casting할 필요가 없다.
 return this.simpleJdbcTemplate.queryForObject(sql, String.class, id);

이 역시 Best 방법에 대해서 좀더 생각해 봐야 한다. 이후에 다시 언급하기로 한다.
신고

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

[SpringJDBC] SimpleJdbcCall  (0) 2008.08.26
[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
posted by Max.
prev 1 next

티스토리 툴바