BACK/Spring

Spring 05 - JdbcDaoSupport

dazz6 2024. 7. 16. 18:00
JdbcDaoSupport
여러 Template* 들을 위한 클래스로, 자체적으로 jdbcTemplatedataSource** 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 컬렉션에 저장
		}
    }
}

 

참고 블로그

Spring JDBC 소개 및 DTO와 DAO (tistory.com)

DAO Support Class (tistory.com)