Spring

Spring JDBC를 이용한 데이터 접근법

carrot62 2020. 8. 11. 18:43

Data access layer

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

DAO(Data Access Object)

  • DB에 접근하는 객체
  • Service와 DB 연결하는 역할을 한다
  • "object"단위 - SQL을 이용한 CRUD DB -> "record"단위로 저장 
    object와 record 간의 miss match가 발생할 수 있기 때문에 이런 부분은 직접 해결해줘야 한다

DataSource

DataSource는 DB와 관련된 connection 정보를 가지고 있고, bean으로 등록해서 인자를 넘여주게 된다. 이 과정을 통해 Spring은 DataSource로 DB와의 연결이 가능해진다.
참고로 *JDBC(Java Database Connectivity)

DataSource의 역할: 

  • DB server와의 연결
  • DB connection pooling이 가능하다
DB Connection Pooling이란?

자바 프로그램에서 데이터베이스 연결할 때 시간이 많이 걸리기 때문에 일정량의 connection을 미리 생성해서 저장소에 저장했가가 요청이 있을 때 connection부분에서 꺼내서 제공에서 시간을 절약하는 방법이다. 이러한 프로그래밍 기법을 Connection Pooling이라고 한다. 
  • 트랜젝션 처리
트랜젝션이란?

Transaction은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 적업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산을 의미한다.

DataSource 설정 및 Bean을 등록하고 주입하는 방법:

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

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
<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란?

Java Database Connectivity의 약자로 DB에 접근할 수 있도록 자바에서 제공하는 API(Application Programming Interface)이다. (It's the root of all the data access of Java)

JDBC 데이터는 자료를 쿼리하거나 업데이트하는 방법을 제공한다.

쿼리(query)란? 쿼리를 한다는 것은?

(1)쿼리란 데이터베이스에 정보를 요청하는 것이다. 쿼리를 하는 방법은 일반적으로 3가지가 있다: ①메뉴에서 매개변수를 선택, ②예제에 의한 쿼리(QBE: Query by Example), ③쿼리 언어의 사용

또는

(2)웹 서버에 특정한 정보를 보여달라는 웹 클라이언트 요청이다(구글같은 검색 엔진에서 검색 필드에 내용을 입력할 때 웹서버로 넘어가는 부분 ?=....)

Plain JDBC 와 Spring JDBC

JDBC Template은 Plain JDBC의 단점(복잡한 코드를 계속 반복해서 적어야 한다는 점)을 보완한 Spring에서 제공하는 클래쓰이다.

Spring JDBC에서 개발자가 해야 할 일:
1. Datasource 설정
2. SQL문 작성
3. 결과 처리

JDBC Driver란?

자바 프로그램에서 요청을 DBMS이 이해할 수 있는 protocol으로 변환해주는 클라이언트 사이드 어댑터이다.

Spring 프로젝트에서 DB 프로그래밍을 위해 필요한 라이브러리

pom.xml 파일에 dependency로 추가한다

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

 

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

 

[Spring JDBC] Spring JDBC를 이용한 데이터 접근 방법 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io