본문 바로가기
IT/Spring

Java Framework - Spring(3) : JDBC

by U ZZICK 2022. 5. 18.
반응형

Spring JDBC 

▶ JdbcTemplate 클래스

- JDBC의 반복적인 코드를 제거하기 위해 제공하는 클래스

- DAO 클래스에서 JdbcTemplate 클래스가 제공하는 템플릿 메소드를 호출하여 DB연동 처리

- JdbcTemplate 클래스는 내부적으로 JDBC API를 이용하여 실제 DB연동 작업 처리

BoardDAO, UserDAO → Spring DAO(JdbcTemplate) → JDBC API (java.sql) → Oracle / MySQL
<!-- JdbcTemplate 클래스 등록 -->
<bean class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>

 

▶ DataSource 설정

JdbcTemplate 클래스가 JDBC API를 이용하여 DB연동 처리를 하려면 데이터베이스로부터 커넥션을 얻어야한다. 따라서 JdbcTemplate 객체가 사용할 DataSource를 <bean> 등록하여 스프링 컨테이너가 생성하도록 한다.

<!-- DataSource 클래스 등록 (외부 property 를 사용)-->
<context:property-placeholder location="classpath:datasource.properties"/>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">   
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

 

<datasource.properites>
# DataSource Setting 
jdbc.driverClassName=org.h2.Driver
jdbc.url=jdbc:h2:tcp://localhost/~/test
jdbc.username=sa
jdbc.password=

 

▶ Transaction 관리

- xml 기반의 AOP설정만 사용 가능, 어노테이션 사용 불가

- 애스팩트 설정에서도 <aop:aspect> 엘리먼트 대신 <aop:advisor> 엘리먼트를 사용

: 트랜잭션 관리 어드바이스는 우리가 직접 클래스를 구현하지 않고, 스프링 컨테이너가 자동으로 생성하므로 어드바이스 메소드 이름을 알 수 없다. 

<!-- Transaction 설정 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>
<tx:advice id="txAdvice" transaction-manager="txManager">
    <tx:attributes>
        <tx:method name="*" rollback-for="Exception"/>
    </tx:attributes>
</tx:advice>
<aop:config>
    <aop:pointcut id="txPointcut" expression="execution(* com.multicampus.biz..*Impl.*(..))"/>
    <aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>
</aop:config>
반응형

댓글