JdbcTemplate의 사용법 기본 예제

Goal

  • Spring JDBC 기본 과정에 대해 이해한다.
  • JdbcTemplate의 기본 예제를 통해 사용법을 익힌다.

Data Access Layer 이해하기

Spring JDBC 사용 과정

1. DataSource 설정

  1. DB와의 연결을 위한 DB Server에 관한 정보(Property)를 설정한다.
    • 설정 정보: url, driver, username, password
  2. 해당 property file에 있는 값을 place holder을 통해 DataS래ucde의 속성으로 설정한 후 해당 BasicDataSource(DataSource interface 중 하나)를 bean으로 등록한다.
    • Spring JDBC를 사용하려면 먼저, DB Connection을 가져오는 DataSource를 Spring IoC 컨테이너의 공유 가능한 Bean으로 등록해야 한다.
  3. 생성된 BasicDataSource Bean을 Spring JDBC에 주입한다.

2. DAO에서의 처리 과정

  1. DataSource 설정(위의 과정)
  2. 위에서 bean으로 등록한 DataSource를 setter parameter를 통해 주입한다.
    • @Autowired에 의해 DataSource Type에 해당하는 bean을 찾아서 주입한다.
    • 여기서는 DataSource interface 중 하나인 BasicDataSource를 찾아서 주입한다. (위의 과정에서 등록한 bean)
  3. Spring JDBC 접근 방법 중 하나인 JdbcTemplate 객체를 생성하여 dataSource를 주입한다.
  4. CRUD API를 제공한다.
    • 1) SQL문을 작성한다.
    • 2) RowMapper interface 구현을 통해 SQL의 결과(record type)를 객체(object type)에 매핑하여 결과를 리턴한다.
      • 개발자는 mapRow()라는 interface method를 정의하여 결과를 처리한다.
      • 한 번만 사용하는 기능의 경우 RowMapper를 익명 클래스로 작성하여 사용한다.

@Component("offersDao")와 @Autowired의 기능

<context:property-placeholder location="com/spring/props/jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<!-- @Component: OffersDAO 클래스를 id를 offersDao로 하는 bean으로 직접 등록 -->
<bean id="offersDao" class="com.spring.OffersDAO">
    <!-- @Autowired: id가 dataSource(ref 값)인 bean을 찾아 OffersDao의 setDataSource에 주입 -->
    <property name="dataSource" ref="dataSource" />
</bean>
<!-- Component 패키지 지정: 해당 패키지를 스캔하여 Annotation이 붙은 클래스를 bean으로 등록 -->
<context:component-scan base-package="com.spring"></context:component-scan>

<context:property-placeholder location="com/spring/props/jdbc.properties"/>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driver}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<!-- 아래와 같은 설정 필요 없음 -->
<bean id="offersDao" class="com.spring.OffersDAO">
    <property name="dataSource" ref="dataSource" />
</bean>

JDBC Template 사용법

queryForObject

query

update

관련된 Post

References