View Source

h1. Spring과 iBatis의 연동


h2. iBatis maven Dependency 설정
* ibatis와 spring-orm의 dependency 설정을 pom.xml 에서 확인한다.
* ibatis 버전이 2.3.4.726 인지 확인한다.

{code:title=pom.xml|borderStyle=solid}

<dependency>
<oupId>org.apache.ibatis</groupId>
<artifactId>ibatis-sqlmap</artifactId>
<version>2.3.4.726</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring-core-version}</version>
</dependency>
{code}


h2. Spring datasource 설정
* applicationContext-datasource.xml 파일에 DataSource를 추가한다.
* SqlMapClientFactoryBean빈을 sqlMapClient로 생성한다.
** dataSource와 sqlMapConfig XML 파일의 의존성주입을 추가한다.
* SqlMapClientTemplate빈을 생성하고, sqlMapClient를 의존성 주입한다.

{code:title=/src/main/resources/spring/applicationContext-datasource.xml|borderStyle=solid}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"
default-autowire="byName">

<!-- annotation 기반 트랜잭션 설정 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

<!-- Local Apache Commons DBCP DataSource -->
<bean id="defaultDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${JDBC.Driver}"/>
<property name="url" value="${JDBC.ConnectionURL}"/>
<property name="username" value="${JDBC.Username}"/>
<property name="password" value="${JDBC.Password}"/>
<property name="maxActive" value="15" />
<property name="initialSize" value="15" />
<property name="maxIdle" value="15" />
<property name="minIdle" value="15" />
<property name="testOnBorrow" value="false" />
<property name="validationQuery" value="SELECT 1 FROM DUAL" />
<property name="timeBetweenEvictionRunsMillis" value="10000" />
<property name="testWhileIdle" value="true" />
<property name="numTestsPerEvictionRun" value="3" />
<property name="minEvictableIdleTimeMillis" value="-1" />
</bean>


<!-- Transaction Manager for a single JDBC DataSource -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="defaultDataSource"/>
</bean>

<!-- sqlMapClient 설정 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:datasource/sql-map-config.xml"/>
<property name="dataSource" ref="defaultDataSource" />
</bean>

</beans>
{code}

h2. sqlMapConfig, sqlMap XML 파일 설정
* sqlMapConfig, sqlMap XML 파일을 생성한다.
* /src/main/resources/datasource/sql-map-config.xml 파일로 생성한 예이다.

{code:title=/src/main/resources/datasource/sql-map-config.xml|borderStyle=solid}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">

<sqlMapConfig>
<settings
cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
useStatementNamespaces="true"
/>

<sqlMap resource="sqlmap/Emp.xml"/>

</sqlMapConfig>
{code}

h2. JDBC Driver 접속정보 설정
* /filter/build-local.filter 파일을 열어서 접속할 오라클 DB 정보를 설정한다.

{code:title=/filter/build-local.filter|borderStyle=solid}

{code:title=/filter/build-local.filter|borderStyle=solid}
JDBC.Driver=oracle.jdbc.driver.OracleDriver
JDBC.ConnectionURL=jdbc:oracle:thin:@127.0.0.1:1521:ORCL
JDBC.Username=scott
JDBC.Password=tiger

{code}

h2. web.xml 수정
* web.xml 파일에서 applicationContext-datasource.xml 파일을 로딩하도록 context-param 설정을 추가한다.


{code:title=/WEB-INF/web.xml|borderStyle=solid}
..
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring/applicationContext-datasource.xml
classpath:spring/applicationContext.xml
</param-value>
</context-param>
..
{code}