이미지 출처 : JoJoDevStory_[Spring] 전자정부프레임워크란?
전자정부프레임워크
를 이용해서 코드를 작성하던 중 DB를 추가 연결 해야 하는 상황이 되어서 정리..
나는 oracle
이 이미 하나 연결되어있는 상태에서 추가로 하나 더 연결 하려고 한다!! 그 외 다른 DB도 비슷한 방식으로 구현하면 될 것 같다~~~
이미 1개의 DB가 연결되어있었기 때문에 관련 jar 파일은 이미 세팅이 되어 있는 상태다🧐
이제 본격적으로 세팅하기 !!!
먼저 context-datasource 파일을 수정 해 줘야 한다.
해당 파일의 위치는 egovframework > spring > context-datasource.xml
요롷게 찾아서 들어가면 될 것 같다!! 물론 이건 사람마다 다를 수 있음.
<!-- Oracle -->
<bean id="dataSource-oracle1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="Url1" />
<property name="username" value="UserName1"/>
<property name="password" value="Password1"/>
</bean>
<bean id="dataSource-oracle2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="Url2" />
<property name="username" value="UserName2"/>
<property name="password" value="Password2"/>
</bean>
dataSource-oracle1
이 이미 세팅 되어 있는 상태에서, 하단에 dataSource-oracle2
를 추가 해 준다.
각 DB의 url, usrename, password를 맞게 세팅 해 주면 된다.
보기 쉽게 하기 위해서 1,2 라는 숫자로 구분 했으나 현업에서는 좀 더 실무에 적합한 이름으로 설정 하는게 좋을 것 같다.
여기서는 DB의 연결 정보를 제대로 입력 해 주면 되고, 주의 할 점은 bean id
가 구분 되어야 한다는 점!!!~
다음으로 context-sqlMap 파일을 수정 해 줘야한다. 해당 파일 위치는 위에 작성한 context-datasource.xml
파일과 같은 위치에 세팅되어 있을 것 이다.
<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClient1" class="egovframework.rte.psl.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:/egovframework/sqlmap/config/sql1/*.xml</value>
</list>
</property>
<property name="dataSource" ref="dataSource-oracle1"/>
</bean>
<!-- SqlMap setup for iBATIS Database Layer -->
<bean id="sqlMapClient2" class="egovframework.rte.psl.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocations">
<list>
<value>classpath:/egovframework/sqlmap/config/sql2/*.xml</value>
</list>
</property>
<property name="dataSource" ref="dataSource-oracle2"/>
</bean>
이렇게 세팅 해 주면 된다.
앞서 설정했던 bean id
를 해당 소스의 name="dataSource" 값에 넣어주면 된다.
그리고 value값으로 들어간 주소는, 사용할 SQL들이 들어있는 xml 파일들을 기술하는 부분이다.
서로 다른 DB를 사용하기에 총 2개의 xml 파일이 필요한데, 나는 각 DB마다 여러개의 xml 파일이 선언 될 예정이기 때문에 저렇게 파일 내 전체 xml 파일을 참조 할 수 있도록 설정 해 주었다.
해당 파일에서도 bean id
값은 서로 다르게 설정 해 줘야 한다.
마지막으로 수정되어야하는 DAO 파일!!
총 2개의 DAO 파일이 생성 될 것이다.
@Repository("xxxDAO1")
public class xxxDAO1 extends EgovAbstractDAO {
@Resource(name = "sqlMapClient1")
public void setSuperSqlMapClient( SqlMapClient sqlMapClient ) {
super.setSqlMapClient( sqlMapClient );
}
....
}
@Repository("xxxDAO2")
public class xxxDAO2 extends EgovAbstractDAO {
@Resource(name = "sqlMapClient2")
public void setSuperSqlMapClient( SqlMapClient sqlMapClient ) {
super.setSqlMapClient( sqlMapClient );
}
....
}
여기서 주의 할 점은 앞서 설정 한 context-sqlMap.xml
파일의 bean id
값이 각각 설정 된다는 점이다!!