Spring Data/JdbcTemplate와 MyBatis

JdbcTemplate와 MyBatis - JdbcTemplate 소개

Hcode 2022. 12. 8.

 


 

JdbcTemplate 소개

  • SQL Mapper 기술인 JdbcTemplate
  • 설정의 편리함
  • 반복 문제 해결
  • JdbcTemplate만 사용할 시 단점

에 대해 다룹니다.

 


 

SQL Mapper 기술인 JdbcTemplate

SQL Mapper는 ORM 기술과 같이 매우 편리한 Data Access 기술입니다.

간단하게 말하면

  장점으론 여러 불편한 점들은 자동화해주고 객체에 매핑을 편하게 해주는 것이며

    단점은 SQL을 직접 작성해야 하는 겁니다.

 

SQL을 직접 작성하는 경우에

  스프링이 제공하는 JdbcTemplate는 아주 좋은 선택지입니다.

JdbcTemplate는 JDBC를 매우 편리하게 사용할 수 있도록 도와줍니다.

 

장점과 단점에 대해 더 알아봅시다.

장점부터 알아보겠습니다.

 


 

설정의 편리함

JdbcTemplate는 spring-jdbc 라이브러리에 포함되어 있습니다.

이것은 스프링 JDBC를 사용할 때 기본으로 사용되는 라이브러리입니다.

그러므로 별도의 복잡한 설정 없이 바로 사용할 수 있습니다.

 


 

build.gradle

build.gradle에 해당 의존 관계를 추가합니다.

dependencies {
    ...
    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
    ...
}

org.springframework.boot:spring-boot-starter-jdbc를 추가하면

  JdbcTemplate가 들어있는 spring-jdbc가 라이브러리에 포함됩니다.

 

또한

  저는 H2 데이터베이스를 사용하기로 하였으므로

    H2 데이터베이스 클라이언트 라이브러리도 추가하였습니다.

dependencies {
    ...
    runtimeOnly 'com.h2database:h2'
    ...
}
Spring Initializr에서 프로젝트를 생성 시 포함시킬 수도 있습니다.
나중에 MyBatis에 대한 글을 작성합니다.
MyBatis는 내부에 spring-boot-starter-jdbc 의존관계를 지니고 있습니다.
그러므로 MyBatis를 사용한다면, 해당 의존 관계는 추가되지 않게 됩니다.

 


 

반복 문제 해결

JdbcTemplate는 이름에서 알 수 있듯이

  템플릿 콜백 패턴을 사용해서 JDBC를 직접 사용할 때 발생하는
    대부분의 반복 작업을 대신 처리해줍니다.

 

  • 그리고 우리가 생각할 수 있는 대부분의 반복 작업을 대신 처리해줍니다.
  • Connection 획득
  • Statement를 준비하고 실행
  • 결과를 쉽게 얻을 수 있도록 ResultSet의 Row를 반복해서 접근
  • Connection 종료, Statement 종료, ResultSet 종료
  • Transaction을 다루기 위한 Connection 동기화
    (TransactionSynchronizationManager를 사용하여, 스레드 로컬에 Connection 보관)
  • 예외 발생 시 스프링 예외 변환기 실행

 

개발자는 SQL을 작성하고
  전달할 파라미터를 정의하고
    응답 값을 매핑하기만 하면 됩니다.

 


 

JdbcTemplate만 사용할 시 단점

이전까지 장점만 말했지만 단점도 있습니다.

동적 SQL을 해결하기 어렵다는 것입니다.

 

여기서 동적 SQL이란

  상황에 따라 다른 SQL문을 만드는 것입니다.

 

예를 들면
  조건에 맞게 검색을 하는 경우입니다.

이름, 가격, 매진, 신상품 등의 조건마다 각각 다른 SQL문이 사용됩니다.

모든 경우의 수와 기타 상황까지 고려하여 SQL문을 자바 코드로 작성하는 것은
  여간 어려운 일이 아닙니다.

매우 복잡하고 매우 번거로우며 매우 실수하기 쉽습니다.

JdbcTemplate의 치명적인 단점이라고 할 수 있습니다.

 

하지만 다행히 이 치명적인 문제는
  MyBatis를 사용하면 쉽게 해결할 수 있습니다.

 


 

다음 글로 JdbcTemplate 적용에 대해 알아봅시다.
 

JdbcTemplate와 MyBatis - JdbcTemplate 적용(데이터 조회)

이전 글로 JdbcTemplate 소개를 다루어 보았습니다. JdbcTemplate와 MyBatis - JdbcTemplate 소개 JdbcTemplate 소개 SQL Mapper 기술인 JdbcTemplate 설정의 편리함 반복 문제 해결 JdbcTemplate만 사용할 시 단점 에 대해 다

hhhhicode.tistory.com

댓글