-> 단위테스트를 잘 만드는게 통합테스트보다 더 중요하다.
⭐JdbcTemplate 설명 인용자료 : 잘 설명돼있으니까 확인할것!
JdbcTemplate이란 ?
JDBC API를 이용하려면 DB 연동에 필요한 Connection 객체와 쿼리 실행을 위한 PreparedStatement 객체를 생성해야합니다. 그리고 쿼리 실행 후에는 finally 블록에서 ResultSet, PreparedStatement, Connection타입 객체들을 close() 메서드로 닫습니다. 이 코드들은 DB연동할 때 데이터 처리와는 관계 없는 코드지만 JDBC 프로그래밍을 할 때 구조적으로 반복됩니다. 이 구조를 사용할 때 핵심 코드는 반도 되지 않습니다. 이런 구조적인 반복을 줄이기 위한 방법은 템플릿 메서드 패턴과 전략 패턴을 함께 사용하는 것입니다. 스프링은 이 두 패턴을 엮은 JdbcTemplate 클래스를 제공합니다.
dbcTemplate 클래스는 SELECT 쿼리 실행을 위한 query() 메서드를 제공합니다. 아래 메서드들은 자주 사용되는 쿼리 메서드들입니다.
List<T> query(String sql, RowMapper<T> rowMapper)
List<T> query(String sql, Object[] args, RowMapper<T> rowMapper)
List<T> query(String sql, RowMapper<T> rowMapper, Object... args)
query() 메서드는 sql 파라미터로 전달받은 쿼리를 실행하고 RowMapper를 이용해서 ResultSet의 결과를 자바 객체로 변환합니다. <T>
는 어떤 타입도 올 수 있다는 것을 의미합니다
쿼리 실행 결과를 자바 객체로 변환할 때 사용하는 RowMapper 인터페이스는 위와 같습니다. RowMapper의 mapRow() 메서드는 SQL 실행 결과로 구한 ResultSet에서 한 행의 데이터를 읽어와 자바 객체로 변환하는 매퍼 기능을 구현합니다.
+RowMapper 인터페이스를 구현한 클래스를 작성할 수도 있지만, 임의 클래스나 람다식으로 RowMapper의 객체를 생성해서 query() 메서드에 전달할 때도 많습니다.