2개 이상의 DataSource 컨트롤하기
- 작성자 :
- 심*일
- 작성일 :
- 2009-11-06 09:34:25
- 조회수 :
- 4,755
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하십니까 중소기업청 콜센터 구축에 참여하고 있는 개발자 심영일 이라고 합니다
다름이 아니오라 콜센터 구축 특성상 현재 가 Altibase , Mssql, Oracle 등
다수의 DBMS 를 다루어야 하기때문에 context-datasource.xml 에 설정을 다른 id 값을 사용하면 2~3개의 datasource를 사용 가능한것인지 문의 드립니다...
가능하다면 어느 파일에 어느 설정을 다루어야 하는지를 문의 드리겠읍니다...
다름이 아니오라 콜센터 구축 특성상 현재 가 Altibase , Mssql, Oracle 등
다수의 DBMS 를 다루어야 하기때문에 context-datasource.xml 에 설정을 다른 id 값을 사용하면 2~3개의 datasource를 사용 가능한것인지 문의 드립니다...
가능하다면 어느 파일에 어느 설정을 다루어야 하는지를 문의 드리겠읍니다...
A
안녕하세요.. 심영일님..
다음과 같이 수행하시면 여러 DB에 접속하실 수 있습니다.
1. dataSource 추가
context-datasource.xml(예시로 실 적용시 다른 이름일 수 있음)에
다른 id를 갖는 dataSource 추가
2. sqlMapClient 추가
dataSource가 지정되는 sqlMapClient(ex:context-sqlMap.xml) 생성
이때 새롭게 추가된 dataSource id를 dataSource property에 지정한다.
3. EgovAbstractDAO를 상속받는 여러 개의 DAO 추가
기존 DAO 클래스가 상속받아 사용하는 EgovAbstractDAO를 상속받는 abstract 클래스 생성 (각 dataSource별로 하나씩 생성)
예를 들면..
public class OtherAbstractDAO extends EgovAbstractDAO {
/**
* DB별 sqlMapClient 지정
*/
@Resource(name = "OtherSqlMapClient")
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSuperSqlMapClient(sqlMapClient);
}
}
위에서 OtherSqlmapClient는 2번에서 생성된 sqlMapClient id로 지정..
4. 업무 DAO 생성
DB별로 업무 DAO를 생성하여 사용하고..
ServiceImpl 부분에서 여러 개의 DAO를 호출하므로서 다른 DBMS에 접속하여 작업
위 처럼 하시면 됩니다.
다만, transaction 부분에 대하여 부분이 문제인데..
이 부분은 transactionManager를 변경하여야 합니다.
구체적인 부분은 WAS 벤더쪽에 문의를 해보셔야 할 것 같습니다.
그럼.. 남은 하루도 즐거운 하루 되십시오.
감사합니다.
다음과 같이 수행하시면 여러 DB에 접속하실 수 있습니다.
1. dataSource 추가
context-datasource.xml(예시로 실 적용시 다른 이름일 수 있음)에
다른 id를 갖는 dataSource 추가
2. sqlMapClient 추가
dataSource가 지정되는 sqlMapClient(ex:context-sqlMap.xml) 생성
이때 새롭게 추가된 dataSource id를 dataSource property에 지정한다.
3. EgovAbstractDAO를 상속받는 여러 개의 DAO 추가
기존 DAO 클래스가 상속받아 사용하는 EgovAbstractDAO를 상속받는 abstract 클래스 생성 (각 dataSource별로 하나씩 생성)
예를 들면..
public class OtherAbstractDAO extends EgovAbstractDAO {
/**
* DB별 sqlMapClient 지정
*/
@Resource(name = "OtherSqlMapClient")
public void setSuperSqlMapClient(SqlMapClient sqlMapClient) {
super.setSuperSqlMapClient(sqlMapClient);
}
}
위에서 OtherSqlmapClient는 2번에서 생성된 sqlMapClient id로 지정..
4. 업무 DAO 생성
DB별로 업무 DAO를 생성하여 사용하고..
ServiceImpl 부분에서 여러 개의 DAO를 호출하므로서 다른 DBMS에 접속하여 작업
위 처럼 하시면 됩니다.
다만, transaction 부분에 대하여 부분이 문제인데..
이 부분은 transactionManager를 변경하여야 합니다.
구체적인 부분은 WAS 벤더쪽에 문의를 해보셔야 할 것 같습니다.
그럼.. 남은 하루도 즐거운 하루 되십시오.
감사합니다.