by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

Spring과 iBatis의 연동

Version 2 by study.gurubee
on 11월 16, 2012 21:54.


compared with
Current by study.gurubee
on 11월 23, 2012 20:29.


 
Key
These lines were removed. This word was removed.
These lines were added. This word was added.

View page history


There are 1 changes. View first change.

 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>
  
   <!-- iBATIS sqlMapClient set-->
  <bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate">
  <property name="sqlMapClient" ref="sqlMapClient"/>
  </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}