Spring의 데이터 접근 방식
Spring에서의 JDBC 프로그래밍
- 데이터 접근 템플릿 제공 : JDBC 프로그래밍을 쉽게 할 수 있는 템플릿
- DAO 지원 클래스 제공 : Template을 쉽게 사용할 수 있도록 지원하는 class
데이터 접근 템플릿
- 템플릿 메소드(template method) 패턴
템플릿 메소드는 프로세스에 대한 틀(skeleton)을 정의함.
전반적인 프로세스(의 흐름)는 고정되어 있고, 변하지 않음.
특정 시점의 프로세스는 특정 상황에 따라 세부적인 구현 내용이 달라짐.
- Spring의 데이터 접근은 템플릿 메소드 패턴을 적용
데이터 접근 단계에서 연결을 얻고, 자원을 해제하는 부분은 고정
데이터 접근 방법은 각각 다름.
- 두가지 클래스
템플릿(template) : 프로세스의 고정된 부분을 담당
데이터 접근 템플릿화
Spring의 템플릿 클래스
DAO 지원 클래스 사용
- Spring의 DAO 지원 클래스
어플리케이션에 대한 DAO 구현시 Spring의 DAO 지원 클래스를 상속받음.
- 내부의 데이터 접근 템플릿에 바로 접근하려면 템플릿 조회 메소드를 호출
- JdbcDaoSupport 클래스를 상속받고, getJdbcTemplate()을 호출해서 작업 수행
저장 플랫폼을 접근하려면 DB와 통신하기 위해 사용되는 클래스를 접근함.
- JdbcDaoSupport의 getConnection() 메소드
JNDI 데이터 소스 사용
Spring 어플리케이션이 JEE 어플리케이션 서버 내에 배포될 때 사용
장점
어플리케이션 외부에 전적으로 관리를 맡김.
어플리케이션 서버는 우수한 성능으로 데이터 소스를 관리하고 시스템 관리자는 데이터 소스를 제어할 수 있음.
JndiObjectFactoryBean 이용
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean" scope="singleton">
<property name="jndiName" value="/jdbc/oracle"/>
<property name="resourceRef" value="true"/>
</bean>
jndiName 속성은 JNDI에서 자원의 이름을 지정
어플리케이션이 자바 어플리케이션 서버 내에서 구동하면 resourceRef 값을 true로 세팅
- 원래의 jndiName 값에 ‘java:comp/env’ 가 붙음.
- ‘java:/comp/env/jdbc/oracle’
Spring이 기본으로 제공하는 DBCP 사용 할 수 있다.
Jakarta Commons Database Connection Pools (DBCP)
http://commons.apache.org/dbcp/
BasicDataSource 사용
DataSource를 bean으로 등록한다.
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521/XE"/>
<property name="username" value=“hr"/>
<property name="password" value=“tiger"/>
<property name="initialSize" value="5"/>
<property name="maxActive" value="10"/>
</bean>
설정항목
http://commons.apache.org/dbcp/configuration.html 참고
JDBC 드라이버 기반한 데이터 소스
DriverManagerDataSource
요청된 연결에 대해서 매번 새로운 연결을 제공.
DBCP의 BasicDataSource와 달리 DriverManagerDataSource에 의해 제공되는 연결은 풀링되지 않음.
SingleConnectionDataSource
요청된 연결에 대해서 매번 동일한 연결을 제공.
정확하게 풀링된 데이터 소스는 아니지만, 단 하나의 연결을 풀링하는 데이터 소스라고 보면 됨.
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value=" jdbc:oracle:thin:@127.0.0.1:1521/XE "/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
멀티쓰레드 환경에서 사용이 제약됨.
' Spring Framework' 카테고리의 다른 글
Spring JDBC 탬플릿 이용: KBO 구단 조회/추가/수정/삭제 (완성) (0) | 2016.04.05 |
---|---|
Spring에서 데이터베이스 연동하기: KBO 구단 조회 (0) | 2016.04.04 |
@Aspect 어노테이션을 이용한 AOP (0) | 2016.04.01 |
AOP라는 엘리먼트를 이용해 AOP 설정을 하는 방법 (0) | 2016.04.01 |
AOP 용어 및 개념 이해를 위한 예제 (0) | 2016.04.01 |