Java Data Access Layer의 이해 및 Spring JDBC를 이용한 데이터 접근 방법

Goal

  • Data Access Layer에 대해 이해할 수 있다.
  • Spring JDBC를 이용한 데이터 접근 방법의 개념을 이해할 수 있다.
  • Spring 프로젝트에서 DB(MySQL)의 데이터에 접근하기 위해 필요한 Library를 설치할 수 있다.

Data Access Layer 이해하기

# DAO(Data Access Object) 란?

DAO(Data Access Object)는 실제로 DB에 접근하는 객체이다.

# JDBC(Java Database Connectivity) 란?

JDBC(Java Database Connectivity)는 DB에 접근할 수 있도록 Java에서 제공하는 API이다. (모든 Java의 Data Access 기술의 근간)

# JDBC Template 이란?

JDBC Template은 내부적으로 JDBC API를 사용하지만 위와 같은 JDBC API의 문제점들을 제거한 형태의 Spring에서 제공하는 class이다.

# DataSource 란?

DataSource는 JDBC 명세의 일부분이면서 일반화된 연결 팩토리이다. Spring은 DataSource로 DB와의 연결을 획득한다.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="driverClassName" value="${jdbc.driverClassName}" />
      <property name="url" value="${jdbc.url}" />
      <property name="username" value="${jdbc.username}" />
      <property name="password" value="${jdbc.password}" />
</bean>

* DB Connection Pooling이란?

* 정보(Parameter)들을 설정하는 방법

  1. Property file을 하나 만들고 Parameter 정보들을 적는다.
  2. ${jdbc.password}와 같은 placeholder를 사용하여 이 Parameter 정보들을 주입한다.

예를 들어, pom.xml에서 springframework-version을 4.2.5.RELEASE로 설정했으면

<groupId>org.springframework</groupId>

에 해당하는 밑에 요소들은 ${org.springframework-version} 로 적어주면 알아서 버전에 맞는 것이 적용된다.


# JDBC Driver 란?

JDBC Driver는 자바 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환해주는 클라이언트 사이드 어댑터이다.

Spring 프로젝트에서 DB 프로그래밍을 위해 필요한 Library

  1. jdbc class: spring-jdbc
    • org.springframework.jdbc.core.JdbcTemplate
  2. data source: commons-dbcp
    • org.apache.commons.dbcp.BasicDataSource
  3. jdbc driver: mysql-connector-java
    • com.mysql.jdbc.Driver

Spring 프로젝트에서의 DB 프로그래밍을 위해 필요한 Library 설정하기

  1. 아래를 적용한 후 다시 시도한다.
    • window > show view > others > maven > maven repository
    • Global Repositories의 하위 전체 선택 후 > 우클릭 > Rebuild Index 클릭
  2. google에 maven repository를 검색하여 소스에 직접 넣을 수 있다.
    ( Maven 사이트: https://mvnrepository.com/ )
    maven이 제대로 되지 않는 경우, 아래의 dependency를 직접 pom.xml에 넣는다.
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

관련된 Post

References