쉽지않은 블로그
spring-JDBC 라이브러리-1 본문
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; }
- DB 연결오픈
- statement 준비와 preparedstatement 생성
- 조회 문의 경우 resultset의 순회 (인덱스를 벗어나지 않게 조심)
- 각종 예외처리
- 트랜잭션 제어
등을 사용자가 신경을 쓰면서 작성할 것이다.
spring-JDBC를 사용하게 되면 이런 불필요한 과정은 생략이 가능하고
연결할 때 파리 미터들에 대한 정의 , SQL , 파라미터 선언과 값 (DTO) , 기능 들에 대해서만 정의를 해주면 된다
spring-jdbc
spring-JDBC에서 핵심기능을 담당하는 부분 몇 가지를 소개합니다.

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 클래스의 기능
- 리소스 생성 , 해지를 처리해서 연결을 닫는 것을 잊어 발생하는 문제 등을 피할 수 있습니다.(번거로운 예외처리를 피하게 해 줍니다)
- statement의 생성과 실행을 처리해줍니다
- SQL 조회 , 업데이트 , 저장 프로시저 호출 , ResultSet 반복 호출 등을 알아서 처리해줍니다
- 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프레임워크를 지원
'개발공부 > 스프링' 카테고리의 다른 글
[Spring] DI & IOC (3) 스프링 IoC 컨테이너 (0) | 2021.04.13 |
---|---|
[Spring] DI & IOC (2) 의존성 주입 (0) | 2021.04.13 |
[Spring] DI & IOC (1) 느슨한 결합력 (0) | 2021.04.13 |
spring-JDBC 라이브러리-3 (0) | 2021.03.25 |
spring-JDBC 라이브러리-2 (0) | 2021.03.24 |