JdbcTemplate은 JDBC를 매우 편리하게 사용할 수 있게 도와주기 때문에 SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate은 아주 좋은 선택지다.
spring-jdbc 라이브러리에 포함되어 있는데, 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본으로 사용되는 라이브러리이다.커넥션 획득
statement를 준비하고 실행
결과를 반복하도록 루프를 실행
커넥션 종료,statement,resultset종료 트랜잭션 다루기 위한 커넥션 동기화
예외 발생시 스프링 예외 변환기 실행
JdbcTemplate이 제공하는 주요 기능은 다음과 같다.
JdbcTemplate 순서 기반 파라미터 바인딩을 지원한다. NamedParameterJdbcTemplate 이름 기반 파라미터 바인딩을 지원한다. (권장) SimpleJdbcInsert INSERT SQL을 편리하게 사용할 수 있다. SimpleJdbcCall 스토어드 프로시저를 편리하게 호출할 수 있다.실무에서 가장 간단하고 실용적인 방법으로 SQL을 사용하려면 JdbcTemplate을 사용하면 된다.
JPA와 같은 ORM 기술을 사용하면서 동시에 SQL을 직접 작성해야 할 때가 있는데 그때도 JdbcTemplate을 함께 사용하면 된다.
그런데 JdbcTemplate의 최대 단점이 있는데, 바로 동적 쿼리 문제를 해결하지 못한다는 점이다.
그리고 SQL을 자바 코드로 작성하기 때문에 SQL 라인이 코드를 넘어갈 때 마다 문자 더하기를 해주어야 하는 단점도 있다.
StringBuilder로... 더하기 더하기.. 이런 코드는 컴파일 단계에서 쿼리가 잘못됬는지 알 수 없다..
스프링 무조건 JPA만 사용하면 되는게 아닌가? 라는 생각을 했었는데 이번 JdbcTemplate을 공부하고 나서 다양한 방법으로 간단하게 구현할 수 있구나 라는 걸 깨닫게 되는 것 같다!?