스프링 JdbcTemplate

김개발세발바닥·2024년 2월 4일

스프링

목록 보기
6/13

JdbcTemplate 소개와 설정.

JdbcTemplate은 JDBC를 매우 편리하게 사용할 수 있게 도와주기 때문에 SQL을 직접 사용하는 경우에 스프링이 제공하는 JdbcTemplate은 아주 좋은 선택지다.

장점

  • 설정의 편리함
    JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있는데, 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본으로 사용되는 라이브러리이다.
    그리고 별도의 복잡한 설정 없이 바로 사용할 수 있다.
  • 반복 문제 해결
    JdbcTemplate은 템플릿 콜백 패턴을 사용해서, JDBC를 직접 사용할 때 발생하는 대부분의 반복 작업을 대신 처리해준다.
    개발자는 SQL을 작성하고, 전달할 파리미터를 정의하고, 응답 값을 매핑하기만 하면 된다.
    우리가 생각할 수 있는 대부분의 반복 작업을 대신 처리해준다.

    커넥션 획득
    statement 를 준비하고 실행
    결과를 반복하도록 루프를 실행
    커넥션 종료, statement , resultset 종료 트랜잭션 다루기 위한 커넥션 동기화
    예외 발생시 스프링 예외 변환기 실행

단점

  • 동적 SQL을 해결하기 어렵다.

주요 기능

JdbcTemplate이 제공하는 주요 기능은 다음과 같다.

  • JdbcTemplate 순서 기반 파라미터 바인딩을 지원한다.
  • NamedParameterJdbcTemplate 이름 기반 파라미터 바인딩을 지원한다. (권장)
  • SimpleJdbcInsert INSERT SQL을 편리하게 사용할 수 있다.
  • SimpleJdbcCall 스토어드 프로시저를 편리하게 호출할 수 있다.

정리

실무에서 가장 간단하고 실용적인 방법으로 SQL을 사용하려면 JdbcTemplate을 사용하면 된다.
JPA와 같은 ORM 기술을 사용하면서 동시에 SQL을 직접 작성해야 할 때가 있는데 그때도 JdbcTemplate을 함께 사용하면 된다.
그런데 JdbcTemplate의 최대 단점이 있는데, 바로 동적 쿼리 문제를 해결하지 못한다는 점이다.
그리고 SQL을 자바 코드로 작성하기 때문에 SQL 라인이 코드를 넘어갈 때 마다 문자 더하기를 해주어야 하는 단점도 있다.
StringBuilder로... 더하기 더하기.. 이런 코드는 컴파일 단계에서 쿼리가 잘못됬는지 알 수 없다..

스프링 무조건 JPA만 사용하면 되는게 아닌가? 라는 생각을 했었는데 이번 JdbcTemplate을 공부하고 나서 다양한 방법으로 간단하게 구현할 수 있구나 라는 걸 깨닫게 되는 것 같다!?

0개의 댓글