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 데이터를 가져옴
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 |