maven 설정을 마쳤다면 Spring 설정파일에 필요한 bean들을 등록한다.
DispatcherServlet보다 상위 레벨의 설정이므로 root-context.xml에 작성한다.
DataSource 등록
DataSource의 인스턴스는 데이터베이스의 연결을 담당한다.
연결을 위해 4개의 정보를 설정해야 하며, 설정하는 정보는 다음과 같다.
driverClassName : 드라이버 클래스의 클래스명
url : 접속을 시도할 경로. DB/드라이버종류@IP:Port:SID
username : 접속할 계정 이름 (이 문서에서는 test)
password : 접속할 계정 비밀번호(이 문서에서는 test)
JdbcTemplate 등록
spring-jdbc에서는 데이터베이스에 쉽게 명령을 전송할 수 있도록 JdbcTemplate 클래스를 제공한다.
JdbcTemplate에는 DataSource 인스턴스를 참조 설정하도록 되어 있다.
Test Case 실행
등록이 정상적으로 이루어 졌는지 테스트케이스를 생성하여 확인한다.
테스트는 spring-bean을 불러오기 위하여 스프링과 연동할 수 있도록 구현한다.
테스트를 위해서는 spring-test와 junit을 추가해야 합니다.
pom.xml
Test class
정상적으로 설정되었다면 다음과 같이 출력된다.
JdbcTemplate을 이용한 명령 수행
JdbcTemplate을 이용하여 데이터베이스에서 다음 작업을 수행할 수 있다.
Create
Read
Update
Delete
테이블 생성
테스트를 위한 테이블과 시퀀스를 생성한다.
INSERT 코드
JdbcTemplate을 이용하여 데이터베이스 테이블에 데이터를 추가하는 코드를 구현한다.
src/test/java : com.hakademy.spring11.Test02
JdbcTemplate에 DataSource가 설정되어있기 때문에 JdbcTemplate만 사용하도록 설정한다.
테스트 코드를 실행하기 위해서는 sql 명령과 데이터가 필요하다.
sql은 String 형태로 생성하며, 채워야할 데이터는 ?로 처리한다.
? 자리에 들어갈 데이터는 Object[] 형태로 실행 시 배열의 인덱스 순서대로 ? 자리에 차례대로 설정되기 때문에 순서에 주의해야 한다.
insert, update, delete 모두 JdbcTemplate에서는 .update()로 실행한다.
Update
JdbcTemplate을 이용하여 데이터베이스 테이블에 데이터를 수정하는 코드를 구현한다.
update의 경우 insert와 큰 차이가 없다.
src/test/java : com.hakademy.spring11.Test03
성공 상황을 단정하기 위해 assertNotEquals()를 이용하여 0이 아닌지 확인한다.
실행된 row의 개수가 0이면 실패, 0보다 클 경우 성공이다.
Delete
JdbcTemplate을 이용하여 데이터베이스 테이블에 데이터를 삭제하는 코드를 구현한다.
insert, update와 크게 차이가 없음을 확인할 수 있다.
src/test/java : com.hakademy.spring11.Test04
성공 상황을 단정하기 위해 assertNotEquals()를 이용하여 0이 아닌지 확인한다.
실행된 row의 개수가 0이면 실패, 0보다 클 경우 성공이다.
Select
select 구문은 insert, update, delete와 다르게 데이터를 조회하는 것이 목적이기 때문에 다른 명령을 사용한다.
.query(sql, param, mapper) : 목록 조회
.query(sql, param, extractor) : 단일 항목 조회(사용자 정의)
.queryForInt(sql) : int 항목 조회(개수, 합계, ..) - Spring 4.x에서 사용 불가
.queryForObject(sql, class) : 단일 항목 조회(원시형, String)