Spring JDBC Template

2022. 2. 25. 23:55Spring 기초

스프링 JDBC는 DB접근 기술로.. 이전의 방대한 양의 코드를 간결하게 줄여준다.

커넥션 객체 얻고~ Try catch 하고~ 쿼리문 날리고 ~  자원 반납하는 과정이 획기적으로 줄어들었다.

**다만 쿼리문은 직접 날려야 한다.

 

사용하기 위해서는

build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리를 추가해야 한다.

implementation 'org.springframework.boot:spring-boot-starter-jdbc'

위처럼 라이브러리를 등록하면, Spring Boot는 이를 사용하는데 필요한 라이브러리를 자동으로 가져온다.

 

Spring Bootspring-boot-starter라는 사전에 정의한 의존성 조합을 제공한다. Jdbc 등 프로젝트에 설정해야 하는 대부분의 의존성들을 starter는 이미 포함하고 있기 때문에 아래 코드와 같이 starter에 대한 의존성 추가만으로 jdbc가 사용 가능하다

 

이후 프로퍼티 설정 파일에(resources/application.properties) 다음과 같이 h2 데이터베이스 연결 설정을 추가한다.

아래 두 줄은 jpa 설정으로 일단 무시한다.

@Configuration 클래스에서 dataSource 빈 생성을 하지 않아도 dataSource 빈은 스프링에 자동 등록된다. resources/application.properties에서 예약된 키에 프로퍼티 설정을 하면 자동으로 dataSource 빈이 생성되어 등록되기 때문이다.

DB 연결에 관한 예약된 key spring.datasource이며, 뒤에 붙은 driver-class-name, url 등은 필수 속성이다. (JPA 설정에 관한 예약 keyspring.jpa)

따라서 DataSource가 스프링 컨테이너에 등록되어있으므로,  25행에서 자동 주입(Autowired) 받을 수 있다.

 

 

JDBC 메서드

31행의 SimpleJdbcInsert 클래스를 이용하면, 쿼리문 없이 DB에 insert가 가능하다.

SimpleJdbcInsert는 생성자의 매개변수로 1) DataSource나 2) JdbcTemplate을 받을 수 있다. 매개변수로 DataSource를 받으면 JdbcTemplate을 생성하면서 DataSource를 JdbcTemplate의 생성자 매개변수로 전달한다. 여기서는 이 과정이 25행에서 진행되었으므로 이미 생성된 JdbcTemplate을 매개변수로 전달받았다.

 

SimpleJdbcInsert는 사용 시 DB 테이블의 이름(여기서는 member), 컬럼명과 해당 컬럼의 value들을 담을 Map을 제공해주면 된다. 34행에서 Map을 생성하였고 35행에서는 key와 value를 담았다.

 

MapSqlParameterSource은 Map과 유사하며, Map을 둘러싸면서 어댑터 역할을 수행한다. 생성자의 매개변수로 Map을 받을 수 있으며 제공받은 Map에 기반한 MapSqlParameterSource을 생성한다.

 

 

'Spring 기초' 카테고리의 다른 글

RedirectAttributes  (0) 2022.03.26
AOP(Aspect Oriented Programming)  (0) 2022.03.02
Spring 통합 테스트  (0) 2022.02.25
스프링 웹 개발 방식 - 정적컨텐츠, MVC 패턴, API  (0) 2022.02.16
Cookie & Session  (0) 2022.02.09