donaricano-btn

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
블로그 이미지

리딩리드

,