donaricano-btn

DataAccessLayer_1

- 비즈니스 로직데이터베이스 접속같은 SQL발행분리하는것이다


1. DAO Pattern

- 데이터 베이스접속과 SQL 발행 같은 데이터 액세스 처리를 DAO라고 불리는 오브젝트로 분리

- 데이터 엑세스에 특화된 처리를 비즈니스 로직에 숨긴다. 

- 데이터 엑세스 방식이 변경되어도 DAO만 변경하면됨


2. 자바의 데이터 엑세스 기술과 스프링의 기능

1) 대표적인 데이터 엑세스 기술

- JDBC, Hibernate, MyBatis(iBatis), JPA, S2DAO ...

- 스프링은 기존의 다섯가지 데이터 엑세스 기술을 더욱 사용하기 쉽게한다


2) 스프링 기능을 이용하여 얻는 장점

- 데이터 엑세스 처리를 간결하게 기술할 수 있다

- 스프링이 제공하는 범용적이고 체계적인 데이터 엑세스 예외를 이용할 수 있다

- 스프링의 트랜젝션 기능을 이용할 수 있다



3. 스프링 JDBC

- 소스코드가 심플해 진다

- SQLException의 원인을 특정하는 처리도 필요없다


3_1. Template 클래스의 소스 단순화

1) JdbcTemplate class

- 메소드의 종류가 풍부

- 스프링 버전 1.0 부터 제공

2) NamedParameterJdbcTemplate

- SQL 파라미터에 임의의 이름을 붙여 SQL을 발행할 수 있다

- 스프링 버전 2.0 부터 제공

3) SimpleJdbcTemplate

- JdbcTemplate + NamedParameterJdbcTemplate

- 3.1 부터는 권장되지 않는다


3_2. 템플릿 클래스의 Bean 등록

1) Bean등록


2) 인젝션

 


3_3. SELECT문 - 도메인으로 변환하지 않을때

- 레코드의 수를 조회할 때 한 레코드안의 특정 컬럼 처럼 단순값을 가져올때


1) queryForInt, queryForLong

- 수치형 값을 가져올때

 

2) queryForObject

- 취득 결과가 문자열이나 날짜형일 때

 

 

3) queryForMap

- 레코드의 값을 가져옴

 

4) queryForList

- 여러 레코드의 Map 데이터를 가져옴

 

3_4. SELECT 문 - 도메인으로 변환할 때

1) queryForObject
- 한 레코드의 도메인을 가져옴

A. 익명의 클래스 사용

 

B. 익명의 클래스 사용 안함

 

2) query

- 여러 레코드의 오브젝트 가져옴

 

3) BeanPropertyRowMapper

- RowMapper 구현 클래스, 도메인을 자동으로 생성

- 내부에서 리플렉션을 사용 하므로 성능이 나쁘다

 

4) ResultSetExtractor

- 조인한 테이블의 여러 레코드를 가져오고 싶을 때

- 소스 코드가 복잡해진다

 


3_5. INSERT/UPDATE/DELETE 

1) update

- insert/update/delete 모두 update()로 사용가능

 

 

 


'Back-End > SpringFrame_1' 카테고리의 다른 글

[Spring]BusinessLayer_1  (0) 2016.08.01
[Spring] DataAccessLayer_2  (0) 2016.07.31
[Spring] AOP_2  (0) 2016.07.20
[Spring] DI_2  (0) 2016.07.17
[Spring] DI_1  (0) 2016.07.16
블로그 이미지

리딩리드

,