Chapter4. Spring JDBC
기존의 JDBC를 이용하여 퍼시스텀스 계층을 구현할 때 Connection 생성, PreparedStatement 생성, SQLException 처리와 같이 중복적으로 구현해야 하는 소스 코드가 너무 많았다.
Spring 프레임워크는 이러한 문제점(?)을 해결하기 위해 JDBC를 추상화한 API를 새롭게 제공하고 있다.
이것이 Spring 프레임워크가 제공하고 있는 Spring JDBC 이다.
Spring JDBC는 기존의 JDBC를 추상화하고 있는 만큼 지금까지 개발자들이 직접 구현해 왔던 위에서 언급한 중복적으로 구현해야만 했던 반복적인 작업들을 프레임워크가 담당하고 있다.
Spring JDBC를 기반으로 퍼시스턴스 계층을 개발할 경우 개발자들이 구현해야 할 부분은 다음의 표와 같이 상당히 단순해진다.
[표] Spring JDBC를 이용할 때 개발자들이 구현해야 할 부분
작업 |
Spring JDBC |
개발자 |
Connection 관리 |
O |
X |
SQL |
X |
O |
Statement 관리 |
O |
X |
ResultSet 관리 |
O |
X |
Row 데이터 추출 |
X |
O |
파라미터 선언 |
X |
O |
파라미터 Setting |
O |
X |
트랜잭션 관리 |
O |
X |
JDBC |
Spring JDBC |
DriverManager/DataSource |
DataSource |
Statement/PreparedStatement/CallableStatement |
JdbcTemplate/SQLObjects |
ResultSet/RowSet |
POJO List 또는 Map/SQLRwoSet |
DBQuery.properties - 사용자 관리 모듈 쿼리 |
board.sql.insert = INSERT INTO BOARD \ |
applicationContext.xml |
<beans> |
MySQLUserDAO.java |
package net.javajigi.user.dao; |
Insert, Update, Delete |
int update(String sql) |
int update(String sql, Object[] args) | |
int update(String sql, Object[] args, int[] argTypes) | |
Select |
int queryForInt(String sql) |
int queryForInt(String sql, Object[] args) | |
long queryForLong(String sql) | |
long queryForLong(String sql, Object[] args) | |
Object queryForObject(String sql, Class requiredType) | |
Object queryForObject(String sql, Object[] args, RowMapper rowMapper) | |
List queryForList(String sql) | |
List queryForList(String sql, Object[] args) | |
... |
SSISO Community