Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

쉽지않은 블로그

spring-JDBC 라이브러리-1 본문

개발공부/스프링

spring-JDBC 라이브러리-1

쉽지않네 2021. 3. 21. 20:16

spring jdbc 라이브러리를 사용하는 이유

 

다음은 JDBC만을 사용할 때의 코드의 예시이다 (spring-jdbc와 그냥 jdbc는 다르다)

JDBC란 (Java database Connectivity) 자바에서 DB에 접근할 수 있도록 도와주는 자바 자체 api이다 

이  JDBC만을 이용하게 되면 밑에 보이는 코드처럼 여러가지 과정을 거쳐주어야 된다.

public Sample getSample(Integer sampleId) {
Sample sample = null;
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);
String sql = "SELECT description,sample_id FROM sample WHERE sample_id = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1, sampleId);
rs = ps.executeQuery();
if (rs.next()) {
String description = rs.getString(1);
int id = rs.getInt("sample_id");
sample = new Sample(id, description);
}
} catch (Exception e) {
//연결 실패!
e.printStackTrace();
} finally {
if (rs != null) {
//result set 이 열려 있을때
try {
// result set 닫아주기
rs.close();
} catch (SQLException e) {
// result set 닫아주기에 대한 예외처리
e.printStackTrace();
}
}
if (ps != null) {
//prepareStatement 이 열려 있을때
try {
ps.close();
// prepareStatement 닫아주기
} catch (SQLException e) {
e.printStackTrace();
// prepareStatement 닫아주기에 대한 예외처리
}
}
if (conn != null) {
//connection 이 존재할경우
try {
conn.close();
//connection 닫기
} catch (SQLException e) {
e.printStackTrace();
//connection 닫기에 대한 예외처리
}
}
}
return sample;
}

 

  1. DB 연결오픈
  2. statement 준비와 preparedstatement 생성
  3. 조회 문의 경우 resultset의 순회 (인덱스를 벗어나지 않게 조심)
  4. 각종 예외처리 
  5. 트랜잭션 제어 

등을 사용자가 신경을 쓰면서 작성할 것이다.

 

spring-JDBC를 사용하게 되면 이런 불필요한 과정은 생략이 가능하고

 

연결할 때 파리 미터들에 대한 정의 , SQL , 파라미터 선언과 값 (DTO) , 기능 들에 대해서만 정의를 해주면 된다

 


spring-jdbc

spring-JDBC에서 핵심기능을 담당하는 부분 몇 가지를 소개합니다.

[spring-jdbc(jar)파일 안의 구성요소] maven프로젝트일경우 maven-dependencies에서 확인이 가능함


1.org.springframework.jdbc.core

   core에서는 jdbcTemplate 클래스와 템플릿의 다양한 콜백 인터페이스가 추가 클래스를 포함하고 있습니다 

   가장 핵심적인 부분이라고 할 수 있습니다.

   뒤에 나오는 datasource와 관련이 깊습니다.

   

import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;

위 import 문들은 DAO에서 쓰이는 core종속 클래스들의 예시

 

jdbcTemplate 클래스의 기능 

  1. 리소스 생성 , 해지를 처리해서 연결을 닫는 것을 잊어 발생하는 문제 등을 피할 수 있습니다.(번거로운 예외처리를 피하게 해 줍니다)
  2. statement의 생성과 실행을 처리해줍니다
  3. SQL 조회 , 업데이트 , 저장 프로시저 호출 , ResultSet 반복 호출 등을 알아서 처리해줍니다
  4. JDBC예외가 발생할 경우 org.springframework.dao패키지에 정의되어있는 일반적인 예외로 전환하여 줍니다

2.org.springframework.jdbc.datasource

   DataSource는 커넥션 풀을 관리하는 목적으로 사용되는 객체이다 , connection을 할당하고 반납하는 구조.

   Datasource를 쉽게 접근하기 위한 유틸 클래스 , 트랜젝션 매니저 및 다양한 DataSource 구현을 제공한다.

   DB와 connection을 하기 위한 정보들을 가지고 있으며 이 datasource를 내가 사용하고 싶은 테이블에 대하여 Bean으로 등록한 다음 core의 여러 클래스와 함께 사용한다. 

 

3.org.springframework.jdbc.object

   RDBMS의 조회 , 갱신 , 저장 프로시저를 스레드 세이프하고 재사용 가능한 객체로 만들어줌

 

4.org.springframework.jdbc.support

  jdbc.core 및 jdbc.object를 사용하는 jdbc프레임워크를 지원


Comments