Programing/egovFramework

전자정부프레임워크 egov ibatis 복수의 디비 커넥션 설정 방법

리커니 2016. 10. 6.
반응형

 

전자정부프레임워크 egov ibatis 복수의 디비 커넥션 설정 방법

 

프로젝트를 수행하다 보면 각기 다른 데이터베이스 에서 데이터를 컨트롤 해야 하는 경우가 있습니다.

이럴경우 한 프로젝트 내에서 두개의 디비 커넥션을 연결하여 개발을 진행 해야하는데

 

그 방법을 알아보겠습니다.

 

[spec]

egov version : 3.5.1

ibatis 와 연동

 

복수의 디비 커넥션을 설정하기 위해선

context-datasource.xml

context-sqlMap.xml

sql-map-config.xml

egovAbstractDAO.java (class파일로 존재)

정도를 수정해 주면 됩니다.

 

이론적인 내용은 빼고 실무에서 바로 적용할 수 있게 진행하겠습니다.

 

src/main/resources/egovframework/spring/ 에 보시면 context-datasource.xml 이 있습니다.

여기서 두개의 커넥션을 연결할 디비의 정보를 각각 설정해 줍니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
    <bean id="dataSourceWeb" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}"/>
        <property name="url" value="${url}" />
        <property name="username" value="${webusername}"/>
        <property name="password" value="${webpassword}"/>
    </bean>
 
    <bean id="dataSourceBis" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}"/>
        <property name="url" value="${url}" />
        <property name="username" value="${bisusername}"/>
        <property name="password" value="${bispassword}"/>
    </bean>
cs

 

 

저는 properties 에 각 정보를 따로 빼두어 진행 하였기 때문에 위와 같이 설정하였고

그냥 하드 코딩 하셔도 됩니다.

 

후에 같은 위치에 있는 context-sqlMap.xml 파일을 열어 ibatis 설정을 해줍니다.

 

1
2
3
4
5
6
7
8
9
 <bean id="sqlMapClientWeb" class="egovframework.rte.psl.orm.ibatis.SqlMapClientFactoryBean">
  <property name="configLocation" value="classpath:/egovframework/sqlmap/sql-map-config-web.xml"/>
  <property name="dataSource" ref="dataSourceWeb"/>
 </bean>
 
 <bean id="sqlMapClientBis" class="egovframework.rte.psl.orm.ibatis.SqlMapClientFactoryBean">
  <property name="configLocation" value="classpath:/egovframework/sqlmap/sql-map-config-bis.xml"/>
  <property name="dataSource" ref="dataSourceBis"/>
 </bean>
cs

 

각각의 커넥션에서 사용할 sql-map-config 파일의 위치와 context-datasource.xml 에서 설정한 bean id를 매핑합니다.

 

이제 기존에 있던 sql-map-config.xml 파일을 디비 커넥션 수에 맞게 복사를 합니다.

예)

1
2
3
4
5
6
7
8
9
10
11
sql-map-config-web.xml 내용↓
 
<sqlMapConfig>
 <sqlMap resource="egovframework/sqlmap/oracle/web/web_sql.xml"/>
</sqlMapConfig>
 
sql-map-config-bis.xml 내용↓
 
<sqlMapConfig>
 <sqlMap resource="egovframework/sqlmap/oracle/bis/web_sql.xml"/>
</sqlMapConfig>
cs

 

 

그리고 위와같이 각각의 사용될 쿼리가 있는 xml의 경로를 추가 해줍니다.

 

마지막으로 전자정부프레임워크에서 ibatis 설정이 되어 있는 EgovAbstractDAO를 찾습니다.

 

기존에 전자정부 웹 프로젝트를 소스포함해서 생성하시면 샘플 DAO 에서

extends 되어 있는 것을 확인할 수 있습니다. (이클립스에서 커서를 올리고 F3을 누르면 해당 클래스로 이동)

 

그럼 그 내용을 복사하여 DAO를 커낵션 수만큼 생성하고 복사한 EgovAbstractDAO의 내용을 붙여넣습니다.

 

ex)

원하는 위치에 BisAbstractDAO.java, WebAbstractDAO 생성

EgovAbstractDAO 내용 붙여넣기

 

마지막으로 context-sql.xml 에서 설정한 bean id(sqlMapClientWeb, sqlMapClientBis)

붙여넣기 한 내용에서 리소스 이름을 매핑합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
//ex) BisAbstractDAO.java
 
 @Resource(name = "sqlMapClientBis")
 public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
  super.setSqlMapClient(sqlMapClient);
 } 
 
//ex) WebAbstractDAO.java
 
 @Resource(name = "sqlMapClientWeb")
 public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
  super.setSqlMapClient(sqlMapClient);
 }
cs

 

이제 복수의 디비 커낵션을 연결할 설정은 끝났습니다.

 

기존의 DAO에서 extends하던 EgovAbstractDAO 를 커넥션하기를 원하는 DAO로 연결하여 사용하면 됩니다.

 

ex)

EgovAbstractDAO => WebAbstractDAO or EgovAbstractDAO => BisAbstractDAO

 

반응형

댓글

💲 추천 글