반응형

 

 

 

 

1. DAO 의 개념

: DBMS를 통해 데이터를 저장 및 검색하는 기능을 전담하는 객체

- business layer와 독립적인 persistence layer 구현 및 변경 가능

- dao mock object를 이용한 테스트 용이

 

 

 

2. Data Access Template

: 각 영속성 기술을 위한 template class 제공한다.

: DAO 에서 반복적으로 실행되는 작업들을 자동으로 수행한다.

 

3. Spring 에서 예외처리 지원

: DB 오류에 관한 다양한 Exception class 제공한다.

: Spring 이 지원하는 Exception은 모두 "unchecked" exception 이다. 즉 try-catch로 잡아서 처리할 필요가 없다.

 

 

4. Data Source 설정

: 데이터베이스에 대한 connection을 제공하는 factory 객체

 

- Connection pool 사용

- JNDI에 등록된 Data Source 

- JDBC driver 직접 이용

 

1) connection pool

: 데이터베이스 커넥션을 미리 생성시키고 pool로 관리함으로써 데이터베이스 접근 성능을 향상시키기 위한 방법

- BasicDataSource 타입의 객체를 spring bean으로 생성

 

 

2) JNDI에 등록된 data source 설정

: Java EE application server에서 data source를 생성하고 JNDI service에 등록 및 사용

 

 

 

 

 

5. JDBC API

: java application에서 데이터베이스를 접근하는 가장 기본적인 방법

- 장점

1) 표준 SQL 언어를 사용

2) 특정 DBMS에서 제공하는 고유 기능 사용 가능

- 단점

1) 데이터 질의, 갱신 등 핵심적인 코드 외에 connection, statement 등의 자원 할당 및 반납, 예외 처리 등과 관련된 코드 필요

2) 위와 같은 코드가 각 데이터 접근 메소드마다 중복됨

 

 

 

- JDBC API 사용 예

 

 

 

 

 

6. Spring JDBC Template Classes

: JDBC 기반 프로그램에서 반복적으로 작성되는 코드를 구현하여 숨김

1) JdbcTemplate

2) NamedParameterJdbcTemplate

 

 

7. JdbcTemplate

- bean 설정 (spring boot는 필요x)

* 참조 관계 주목 !

 

- Query method 1 : query()

: rowMapper - ResultSet 에 포함된 각 행을 추출해서 T type의 domain객체를 생성하는 RowMapper 객체

 

 

 

- RowMapper interface

: mapRow() => ResultSet의 특정 행에 대해 T type의 객체 생성 및 반환

 

 

- 구현 예 1 : RowMapper class를 별도로 정의

 

 

- 구현 예 2: RowMapper를 익명 클래스로 구현

 

 

- 구현 예 3 : Java 8의 Lambda expression 활용

 

 

 

- query method 2 : queryForList()

: 질의가 하나의 column만을 조회하는 경우 RowMapper 대신 그 column type에 해당하는 Java type 이름을 제공

 

 

- query method 3 : queryForObject() 

: 질의 결과로 List 대신 하나의 T type 객체를 반환

: 질의 결과로 검색되는 row 가 하나인 경우 사용

 

 

 

- Insert/Update/Delete method

 

 

 

 

- 가변 길이 인자 지원

 

예 1) 

 

예 2)

 

 

 

 

 

 

 

 

 

 

 

 

8. NamedParameterJdbcTemplate

: 질의에 포함된 parameter에 이름을 사용

=> Object 대신에 Map이나 paramSource 를 인자로 받음

 

 

예시 )

 

 

 

- SqlParameterSource를 사용한 parameter값 설정

 

- BeanPropertySqlParameterSource 이용

 

 

 

 

 

9. SimpleJdbcInsert

예 1)

 

예 2)

 

 

 

10. DaoSupport

- bean 설정

 

 

 

 

 

 

 

반응형

'Programming > Spring' 카테고리의 다른 글

11. Transaction Management  (0) 2021.06.08
10. Spring 기반 RESTful service  (0) 2021.06.07
08. MyBatis  (0) 2021.06.01
07. Thymeleaf  (0) 2021.05.31
06. Spring Boot  (0) 2021.05.27

+ Recent posts