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

Goal

  • Data Access Layer에 대해 이해할 수 있다.
    • DAO란 (DAO vs DTO)
    • DataSource란
    • JDBC란 (Plain JDBC vs Spring JDBC)
    • JDBC Driver란
  • Spring 프로젝트에서 DB(MySQL)의 데이터에 접근하기 위해 필요한 Library를 설치할 수 있다.

Data Access Layer 이해하기

# DAO(Data Access Object) 란?

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

참고) DAO vs DTO

# DataSource 란?

DataSource는 JDBC 명세의 일부분이면서 일반화된 연결 팩토리이다. 즉 DB와 관계된 connection 정보를 담고 있으며, bean으로 등록하여 인자로 넘겨준다. 이 과정을 통해 Spring은 DataSource로 DB와의 연결을 획득한다.

* DB Connection Pooling이란?

Placeholder의 장점

* DataSource 관련 코드

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql//localhost:3306/databaseName
jdbc.username = root
jdbc.password = password
<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.driverClassName}" />
      <property name="url" value="${jdbc.url}" />
      <property name="username" value="${jdbc.username}" />
      <property name="password" value="${jdbc.password}" />
</bean>

# JDBC(Java Database Connectivity) 란?

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

# JDBC Template 이란?

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

# 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