BACK/Spring
Spring 05 - JdbcDaoSupport
dazz6
2024. 7. 16. 18:00
JdbcDaoSupport
여러 Template* 들을 위한 클래스로, 자체적으로 jdbcTemplate와 dataSource** property를 가진다. DataSource 객체가 주입되면 내부적으로 JDBC template 객체를 생성하므로 설정 파일에 JDBC template bean을 명시적으로 선언할 필요가 없다.
* Template : 리소스를 생성, 해지 처리하고 statement의 생성과 실행을 처리하며 SQL 조회, 업데이트, 저장 프로시저 호출, resultset 반복 호출 등을 실행
** DataSource : DB와의 커넥션을 제공하는 factory 객체
사용해 보기
public class Sample extends JdbcDaoSupport {
// @Autowired 사용으로 의존성 주입
public Sample(DataSource dsc) {
setDataSource(dsc);
}
public ArrayList<DataDto> dataAll() {
RowMapper rm = new dataRowMapper();
return (ArrayList)getJdbcTemplate().query("SELECT * FROM table", rm);
// getJdbcTemplate().query() 실행 결과는 List 타입이므로 ArrayList로 casting
// .query 작업에서 SQL 문을 실행한 결과를 dataRowMapper 클래스에서 오버라이드한 mapRow 실행
}
class dataRowMapper implements RowMapper {
@Override
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
DataDto dto = new DataDto();
dto.setAa(rs.getString("aa"));
dto.setBb(rs.getString("bb"));
dto.setCc(rs.getString("cc"));
return dto;
// RowMapper에 의해 레코드 자료가 소진될 때까지 dto를 List 컬렉션에 저장
}
}
}
참고 블로그