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>
<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>
<!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를 수정해야 하는 번거러움이 있지만
개발자 분들의 노가다를 줄이는데 조금이라도 도움이 되었으면 좋겠다^^








2008/07/16 22:05




2008/07/14 14:01
분류없음


1.7로 업그레이드.
Automatically reloading iBATI...
