참고자료:
1.절차
1) DB와의 연결 : DataSource
2) 명령문 실행 : JdbcTemplate
3) 결과를 받아옴 : RowMapper
DataSource
1) org.springframework.jdbc.datasource.DriverManagerDataSource
- 스프링안에있는 datasource를 통해 접근
2) org.springframework.jndi.JndiObjectFactoryBean
- jndi방식을 통해 접근JdbcTemplate
1) org.springframework.jdbc.core.JdbcTemplate
: db와 연결만 가능
query(), update()
2) org.springframework.jdbc.core.support.JdbcDaoSupport
: db와 연결할수도 있고, 명령도 내릴수 있다.
getConnection(), getJdbcTemplate()RowMapper(org.springframework.jdbc.core) : 결과를 담아오기 위한 인터페이스 - 자동반복
1) Callback Interface : db로부터 결과를 가져와 내가 필요한 결과에 매핑시키도록 해준다ResultSetExtractor : 한개의 레코드를 가져올때 일반적으로 사용된다.
여러개의 레코드를 가져오려면 반복문을 이용해서 가져와야 한다.
- applicationContext.xml 즉, 비지니스 layer에 설정한다.
<!-- DataSource 설정하기 -->
<context:property-placeholder location="classpath:config/database.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@//localhost:1521/xe"/>
<property name="username" value="system" />
<property name="password" value="1234" />
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 트랜잭션 설정하기 -->
<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="get*" read-only="true" />
<tx:method name="*" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="txPointcut" expression="execution(* com.springbook.biz..BoardServiceImpl.*(..) )" />
<aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/>
</aop:config>