[JDBC] Spring JDBC

leehyunjon·2022년 7월 9일
0

JPA

목록 보기
2/10
post-thumbnail

Data Access Layer

자바에서 데이터베이스에 접근하기 위해서는 JDBC는 필수적이다.
JDBC는 자바가 데이터베이스에 접근하기 위해 제공하는 API인데, 오늘은 Spring에서 JDBC를 통해 데이터베이스에 접근하는 과정을 공부해볼 예정이다.


DAO

DAO란 Data Access Object로써 데이터베이스에 접근하는 객체를 뜻한다.

Service와 데이터베이스의 연결점 역할을 하고 데이터베이스에 접근하는 로직과 비즈니스로직을 분리하는 역할을 한다.

SQL을 작성해서 데이터베이스에 접근하거나 적절한 CRUD API를 제공한다.

  • JPA에서 Repository가 DAO 역할을 한다.
  • Spring Data JPA의 Repository는 기본적인 CRUD API 제공 및 메소드 쿼리, JPQL을 작성하는 @Query를 제공해준다.

Data Source

데이터베이스와 관련된 Connection 정보를 담고 있으며 bean으로 등록하여 Connection정보를 JDBC Template에 전달한다.

즉, 데이터베이스와 기본적인 연결 정보를 제공하는 역할을 한다.

Connection Pooling을 통해 좀 더 빠르게 Connection을 도와준다.

  • Connection Pooling이란 자바 프로그램에서 데이터베이스 Connection에 적지 않은 시간이 사용된다.
  • 일정량의 Connection을 생성해서 저장소에 저장해두었다가 프로그램에서 필요로 할 때 저장소에서 Connection을 꺼내와 제공하여 시간을 절약할 수 있다.

Data Source 등록 방법

  1. properties.file에 데이터베이스 정보를 설정한다(driver, name, pw 등..)
  2. properties.file에 등록되어있는 데이터베이스 정보를 place holder를 통해 Data Source 속성으로 설정하고 BasicDataSource를 bean으로 등록한다.
    • Spring JDBC를 사용하기 위해서는 Connection이 필요한데, Connection정보를 가지고 있는 DataSource를 사용하기 위해 DataSource를 bean으로 등록해서 사용해야한다.
  3. 생성된 BasicDataSource는 Spring JDBC에 주입된다.
place holder

properties.file에 정보를 작성하게되면 place holder를 통해 여러곳에서 작성 및 수정할 수 있다.
place holder를 통해 파라미터를 설정하였다면 properties.file에 있는 정보만 수정한다면 다른 곳에서도 동시에 수정되게 된다.
ex) {$jdbc.password}

//properties.file
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql//localhost:3306/databaseName
jdbc.username = root
jdbc.password = password
https://gmlwjd9405.github.io/2018/05/15/setting-for-db-programming.html
//data source
<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>
https://gmlwjd9405.github.io/2018/05/15/setting-for-db-programming.html

JDBC Template

JDBC Template는 Spring JDBC의 접근 방법 중 하나로 Spring JDBC접근을 편리하게 해준다.

Plain JDBC API를 사용하기 위해서는

  1. Driver 로드
  2. 데이터베이스 연결을 위한 Connection 생성
  3. Statement객체 생성 후 질의 실행
  4. 질의 결과를 ResultSet객체에 저장
  5. 추가 로직 실행 후, 생성되었던 객체들 close

와 예외처리, 트랜잭션과 같은 과정을 수행 해야 한다.

JDBC Template는 내부적으로 Plain JDBC API를 사용하고 있지만

  1. Connection 생성/닫기
  2. Statement 생성/닫기
  3. Statement 실행
  4. ResultSet 생성/닫기
  5. Exception 처리
  6. Transaction처리

등의 반복적인 일들을 개발자 대신 처리해 준다.

이로써 개발자는 Connection을 위한 DataSource 설정, SQL작성, 결과처리 만 해주면 된다.


JDBC Driver

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

데이터베이스마다 요구하는 Driver가 다르기 때문에 사용하는 데이터베이스에 맞는 Driver를 사용해 주어야 한다.


정리하자면 자바프로그램에서 데이터베이스에 접근하기 위해서는 DataSource를 설정하여 BasicDataSource를 bean으로 등록 후, JDBC Template에 주입하고 JDBC Template는 JDBC Driver를 통해 데이터베이스에 접근하게 된다.


Require Library

Spring JDBC를 사용하기 위해서는 필수적인 라이브러리가 있다.

  • jdbc class : spring-jdbc
  • data source : commons-dbcp
  • (MySQL을 사용하는 경우) jdbc driver : mysql-connector-java

Reference

https://gmlwjd9405.github.io/2018/05/15/setting-for-db-programming.html

https://victorydntmd.tistory.com/145

profile
내 꿈은 좋은 개발자

0개의 댓글