JCF TEAM BLOG

관리자 글쓰기
블로그 »
서브모듈 별로 분리하여 시스템을 개발하려면 설정파일을 잘 분리해야 한다.
iBATIS 인 경우는 sqlmap-config 파일에 모든 mapping 파일을 등록해야 하므로
사실상 설정 파일을 모듈별로 분리하기는 어렵다.
이 부분에 대하여 고민하고 있던 중에 Spring 프레임워크가 구원투수로 나섰다.

Spring 버전 2.5.3을 이용하면 이 문제를 깔끔(?)하게 처리할 수 있다.

새롭게 추가된 SqlMapClientFactoryBean의 mappingLocations 프로퍼티를 통해
sqlmap mapping 파일을 일일히 지정하지 않고 패턴을 이용하여 일괄적으로 지정할 수 있게 되었다.

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation" value="classpath:sqlmap-config.xml" />
    <property name="mappingLocations" value="classpath:**/sqlmap/*.xml"/>
    <property name="dataSource" ref="dataSource" />
</bean>    


위와 같이 설정하면 sqlmap-config 파일은 아래와 같이 단순해 진다.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://dev.daewoobrenic.co.kr/dtd/sql-map-config-2.dtd">

<sqlMapConfig>    
    <settings useStatementNamespaces="true" cacheModelsEnabled="false"/>
</sqlMapConfig>


주의해야 할 것은  iBATIS 2.3.2 이상의 버전을 사용해야 하며
DTD 파일에서 sqlMap 을 필수에서 옵션으로 변경해 주어야 한다.
우선 테스트를 위해서 src 디렉토리에 com.ibatis.sqlmap.engine.builder.xml 팩키지를
만들고 기존의 sql-map-config-2.dtd  복사하여 아래와 같이 변경을 하였다.

<!ELEMENT sqlMapConfig (properties?, settings?, resultObjectFactory?, typeAlias*, typeHandler*, transactionManager?, sqlMap*)+>


아직까지는 DTD를 수정해야 하는 번거러움이 있지만
개발자 분들의 노가다를 줄이는데 조금이라도 도움이 되었으면 좋겠다^^






 

크리에이티브 커먼즈 라이센스
Creative Commons License
Writer profile
그래도 꿈이 있어서 행복하다^^
2008/07/14 14:01 2008/07/14 14:01

(go to top)