DataAccessLayer_2
1. NamedParameterJdbcTemplate
- SQL의 파라미터에 플레이스홀더(?마크)를 사용하지 않을 때 사용
- 파라미터의 순서를 맞출 필요가 없다
1_1 메소드 체인 사용
- : 뒤의 문자열이 파라미터의 이름
- 개발자가 자유롭게 이름을 정할 수 있다
- MapSqlParameterSource를 이용함으로서 파라미터의 순서가 어긋날 위험성을 줄인다
1_2. 메소드 체인 사용 안함
2. 배치업데이트, 프로시저 콜
2_1. 배치 업데이트
- 많은 양의 레코드를 한번에 갱신하기 위한 것
1) batchUpdate()
A. jdbcTemplate
B. NamedParameterJdbcTemplate
- 두번째 인자가 배열이다
2_2. 프로시저 콜
- 데이터베이스에 준비된 스토어드 프로시저를 호출 할때 사용
Ex)
프로시저 이름 : CALC_PET_PRICE
IN 파라미터 : IN_PET_ID
OUT 파라미터 : OUT_PRICE
1) HSQLDB 데이터 베이스
2) ORACLE, SQL 서버..
3. 범용 데이터 엑세스 예외
- 스프링 JDBC에서만 사용되는 것이 아니라 스프링이 제동하는 데이터 엑세스 기능 전체에서 이용
- 독자적인 예외를 범용적 예외로 변환 함으로써 예외를 핸들링하는 클래스가 데이터 엑세스 기술에 의존하지 않아도 됨
- 스프링이 오류의 원인을 판단해 범용데이터로 변환하브로 SQLException을 분석할 필요 없다
3_1. 적용
1) Template
- JdbcTemplate, NamedParameterJdbcTemplate을 사용하면 SQLException은 자동으로 적용된다
2) @Repository
- DAO클래스에 @Repository 애노테이션을 설정하고 Bean 정의파일에 아래 설정을 하면 적용됨
4. 데이터 소스
- 데이터 소스: 데이터 소스와의 접속 오브젝트인 Connection 오브젝트의 팩토리 이다
- Connection 오브젝트의 생애 주기는 데이터 소스에 맡겨져 있고, 일반 어플리케이션에서 커넥션 풀에 의해Connection 오브젝트를 돌려쓰는 구조로됨
4_1. 데이터 소스의 이용
1) dataSource 정의
2) 인젝션
or
4_2. 스프링이 제공하는 데이터 소스
- 두 클래스 모두 테스트 용도로 만들어 졌으며 커넥션 풀을 지원하지 않는다
- 실제 현장에서 사용 안함
1) SingleConnectionDataSource
- 하나의 커넥션 오브젝트를 닫지 않고 다시 사용한다
- 테스트 케이스에서 커밋, 롤백하고 싶을 때 도움이 된다
2) DriverManagerDataSource
- 커넥션을 요청할 때 마다 커넥션 오브젝트를 생성해서 돌려준다
4_3. 서드파티가 제공하는 데이터 소스
- 대표적인 제품으로 DBCP(아파치)와 c3p0가 있다
1) DBCP
- 커넥션 수 지정가능
4_4. 애플리케이션 서버가 제공하는 데이터 소스
- 보통 애플리케이션 서버 제품은 데이터 소스의 오브젝트 생성/관리 기능이 있다
- 네이밍 서비스 이용
- JNDI를 이용하여 데이터 소스 오브젝트를 가져옴
4_1. JNDI를 이용하여 소스를 얻는 방법
1) JndiObjectFactoryBean
- 데이터 소스 JNDI 이름 : jdbc/MyDataSource
2) jee 스키마를 사용
- JndiObjectFactoryBean 보다 권장
3) @Resource
- 원래 스프링 독자적인 것이 아니지만 용도가 변경됨(@Autowired + @Qualifier)
'Back-End > SpringFrame_1' 카테고리의 다른 글
[Spring] BusinessLayer_2 (0) | 2016.08.07 |
---|---|
[Spring]BusinessLayer_1 (0) | 2016.08.01 |
[Spring] DataAccessLayer_1 (0) | 2016.07.25 |
[Spring] AOP_2 (0) | 2016.07.20 |
[Spring] DI_2 (0) | 2016.07.17 |