개발/Spring Framework
[MyBatis] 여러 DB 연결 설정
유경파
2016. 3. 31. 19:49
특정 목적에 따라 하나의 서비스 이지만 한 서버에서 여러 DB에 접속을 해야 하는 경우가 있다.
현재 서비스 중인 솔루션 중에 하나의 요청을 처리하는데 3개의 각기 다른 DB를 사용해야 하는 경우가 있었다.
방법은 다음과 같다.
나는 지금 spring-mybatis.xml 이라는 곳에 datasource 설정을 하고 있는데 간단하게 이 설정을 여러개 해주면 된다.
여러 종류의 DB (SQL Server, Oracle 등)을 따로따로 설정할 수 있다.
그리고 sqlSessionFactory 에 datasource와 그걸 사용하게 될 mapper 파일을 정의하면 된다.
이 설정이 끝나고 난 후, 해당 DB를 사용할 mapper를 잘 분리해서 만들면 바로 작동하게 되므로 간단하다.
mapper 의 설정에 따라 하나의 DAO를 여러 DB에 사용할 수도 있다.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${jdbc.driverClassName}</value> </property> <property name="url"> <value>${jdbc.url}</value> </property> <property name="username"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <property name="initialSize" value="5" /> <property name="maxActive" value="10" /> <property name="testOnBorrow" value="true" /> <property name="validationQuery" value="SELECT 1" /> </bean> <!-- Second Datasource --> <bean id="dataSource-2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>${jdbc2.driverClassName}</value> </property> <property name="url"> <value>${jdbc2.url}</value> </property> <property name="username"> <value>${jdbc2.username}</value> </property> <property name="password"> <value>${jdbc2.password}</value> </property> <property name="initialSize" value="5" /> <property name="maxActive" value="10" /> <property name="testOnBorrow" value="true" /> <property name="validationQuery" value="SELECT 1" /> </bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource" p:configLocation="classpath:conf/mybatis-config.xml" p:mapperLocations="classpath*:sqlmap/mapper-1/*.xml" /> //sqlmap/mapper-1 폴더 아래의 모든 .xml 파일은 dataSource 설정사용 <bean id="sqlSessionFactory-2" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource-2" p:configLocation="classpath:conf/mybatis-config.xml" p:mapperLocations="classpath*:sqlmap/mapper-2/*.xml" /> //sqlmap/mapper-2 폴더 아래의 모든 .xml 파일은 dataSource-2 설정사용
|