일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Swagger
- 스프링프레임워크
- MVC
- .idea
- GitHub
- DispatcherServlet
- 팀과제
- springframeworkruntime
- springsecurity
- 부스트코스
- Spring
- gitbash
- 원격저장소
- assume True
- assume That
- springboot
- springmvc
- c언어
- 파일삭제
- MVC모듈
- Git
- container
- 컴퓨터과학
- assuming That
- securityconfig
- CS50
- assume
- .out
- swaggerUrl
- Junit5
- Today
- Total
도담이 먹여 살려야하는 집사
Spring JDBC Template 본문
데이터베이스에 연결하고 SQL 쿼리를 실행하는 강력한 메커니즘. 내부적으로 JDBC API를 사용하지만 이에 관련한 많은 문제를 제거함.
JDBC API의 문제점
- 연결 생성, 명령문, 결과 집합 닫기, 열결 등과 같은 퀴리 실행 전후 많은 코드를 작성해야 함.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//드라이버 로드하고 connection 객체 사용하는거 예제 코드 작성해서 올리기
- 데이터베이스 로직에서 예외 처리 코드를 수행해야 함.
- Handle Transaction이 필요함.
- 이런 모든 코드를 하나에서 다른 데이터베이스 로직으로 반복하는 작업은 효율성이 떨어짐.
//db쿼리 실행하는 메소드 예제코드 올리기
위 코드를 보면 계속해서 DB 연결해주고 JDBC 드라이버를 로드하는 코드를 반복적으로 사용함 또는 DBUtil 클래스를 따로 만들어 관리해주는 방법도 있었음.
//DBUtil로 Connection 객체와 JDBC드라이버 자원을 따로 관리해줌.
import java.sql.*;
public class DBUtil {
public static Connection getConnection(){
return getConnection("jdbc:mysql://localhost:3306/Guestbook?serverTimezone=Asia/Seoul",
"root","1010");
}
private static Connection getConnection(String dbURL, String dbId, String dbPassword){
Connection conn;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(dbURL, dbId, dbPassword);
return conn;
}catch(Exception ex){
throw new RuntimeException("Connection Error");
}
}
}
Spring JDBC는 이런 JDBC API를 내부적으로 사용하고 있지만 위와 같은 문제점은 제거하고 쿼리를 직접 작성하는 방법을 제공하여 많은 작업과 시간을 절약할 수 있음.
Spring JDBC 접근
- JdbcTemplate
- NamedParameterJdbcTemplate
- SimpleJdbcTemplate
- SimpleJdbcInsert and SimpleJdbcCall
JdbcTemplate class
연결 객체의 생성 및 닫기 등 자원의 생성과 해제를 처리하여 연결을 끊는 것을 잊었을 때 문제가 되지 않음.
예외를 처리하고 org.springframework.dao 패키지에 정의된 예외 클래스의 도움으로 예외 메시지의 정보를 제공.
모든 데이터베이스 작업을 수행할 수 있음.
- SQL 쿼리 실행
- 업데이트 문장과 저장 프로시저를 호출함.
- ResultSet인스턴스에 대한 반복 및 리턴 된 매개변수 값을 추출
JDBCTemplate클래스의 인스턴스는 일단 구성되면 스레드로부터 안전 >> JDBCTemplate의 단일 인스턴스를 구성한 다음 공유 참조를 여러DAO (또는 저장소)에 안전하게 삽입 할 수 있다는 것을 의미하기에 중요함.
Data Access Layer

[이미지 출처 : gmlwjd9405.github.io/2018/12/19/jdbctemplate-usage.html]
[Spring JDBC] JdbcTemplate의 기본 사용법 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io