두개이상의 커넥션풀 관련
- 작성자 :
- 박*명
- 작성일 :
- 2010-10-07 20:29:24
- 조회수 :
- 2,528
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
현재 물리적인 1DB 가 있고 그 DB에서 프레임워크가 구동된다고 가정할때
2DB에 회원테이블이 있어서 연동을 하려고 합니다.(id 를 가지고.)
1DB에 있는 공용모듈 회원테이블에는 개인정보값 (주소, 전화번호 등등)만 빼고
나머지 기본정보들은 들어가 있을거구요.
궁금한것은 1DB 로 잡혀있는 커넥션풀로 1차로 DB에서 값을 가져와 보여준뒤.
2차로 2DB 에 있는 값을 조회해서 보여주려고 하거든요.
관련 샘플들이 있나요? 꼭 커넥션풀이 아니라도 괜찮습니다. 하지만 2DB 에 회원관리가 되니 사용자나 관리자의 업데이트나 삭제가 잇을시에는 연결이 되어야겠죠.
2DB에 회원테이블이 있어서 연동을 하려고 합니다.(id 를 가지고.)
1DB에 있는 공용모듈 회원테이블에는 개인정보값 (주소, 전화번호 등등)만 빼고
나머지 기본정보들은 들어가 있을거구요.
궁금한것은 1DB 로 잡혀있는 커넥션풀로 1차로 DB에서 값을 가져와 보여준뒤.
2차로 2DB 에 있는 값을 조회해서 보여주려고 하거든요.
관련 샘플들이 있나요? 꼭 커넥션풀이 아니라도 괜찮습니다. 하지만 2DB 에 회원관리가 되니 사용자나 관리자의 업데이트나 삭제가 잇을시에는 연결이 되어야겠죠.
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 벤더쪽에 문의를 해보셔야 할 것 같습니다.
그럼.. 남은 하루도 즐거운 하루 되십시오.
감사합니다.