전자정부프레임워크 다중 DB 설정하기

이애옹·2023년 10월 29일
0


이미지 출처 : JoJoDevStory_[Spring] 전자정부프레임워크란?

전자정부프레임워크를 이용해서 코드를 작성하던 중 DB를 추가 연결 해야 하는 상황이 되어서 정리..

나는 oracle이 이미 하나 연결되어있는 상태에서 추가로 하나 더 연결 하려고 한다!! 그 외 다른 DB도 비슷한 방식으로 구현하면 될 것 같다~~~

이미 1개의 DB가 연결되어있었기 때문에 관련 jar 파일은 이미 세팅이 되어 있는 상태다🧐

이제 본격적으로 세팅하기 !!!

📌 context-datasource.xml

먼저 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.xml

다음으로 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 값은 서로 다르게 설정 해 줘야 한다.

📌 xxxDAO.java

마지막으로 수정되어야하는 DAO 파일!!

총 2개의 DAO 파일이 생성 될 것이다.

xxxDAO1.java

@Repository("xxxDAO1")
public class xxxDAO1 extends EgovAbstractDAO {

 

    @Resource(name = "sqlMapClient1")  
                                                      

    public void setSuperSqlMapClient( SqlMapClient sqlMapClient ) {
        super.setSqlMapClient( sqlMapClient );
    }

 

    ....
}

xxxDAO2.java

@Repository("xxxDAO2")
public class xxxDAO2 extends EgovAbstractDAO {

 

    @Resource(name = "sqlMapClient2") 
                                                         

    public void setSuperSqlMapClient( SqlMapClient sqlMapClient ) {
        super.setSqlMapClient( sqlMapClient );
    }

 

    ....
}

여기서 주의 할 점은 앞서 설정 한 context-sqlMap.xml 파일의 bean id 값이 각각 설정 된다는 점이다!!

👀 참고자료

행이네_DataSource 2개 사용하기

profile
안녕하세요

0개의 댓글