다중 DB 처리 관련 질문입니다.
- 작성자 :
- 최*민
- 작성일 :
- 2012-11-01 15:28:36
- 조회수 :
- 1,429
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
기존 프로젝트가 운영중에 있고, 프레임워크를 적용하여 업그레이드 중입니다.
현재 기존 프로젝트 구성이 처음 화면(로그인)에서 정보를 입력하면 업체정보를 파악하여 업체에 따른 로직의 poolname 이용해서 DB를 접속하는 형태로 구현이 되어 있습니다.
DB연결 정보(업체수)는 여러개 입니다. 또한 업체마다 업무 로직은 거의 동일하며 DB 연결 정보만 틀린 상황입니다.
프레임워크의 다중 DB 구현에 대한 문의 답변은 여러개의 datasource, sqlmapclient 선언하고 dao를 상속받아서
구현하라고 되어있는 걸 봤습니다.
그런데 앞으로 업체가 얼마든지 추가 될 수 있는 상황이고, 업무별로 DAO가 추가 생성이 되어야하면 업체가 추가 될때마다 걸리는 부하가 너무 큰 것 같습니다. 위에서 언급했듯이 업체마다 업무는 거의 동일해서 추가되는 DAO에서 변경될 부분이라고는 datasource와 연결된 sqlmapclient 부분뿐이고, 업체가 추가 될때마다 추가되어야하는 DAO, SERVICE 갯수가 100개는 넘어갈 것 같은 상황입니다.
최초 로그인 정보에 따라서 DAO는 하나로 운영해서 @resource 에 sqlmapclient 맵핑하는 부분을 동적으로 변경할 수는 없을까해서 문의 드려봅니다. (업체가 추가 될때 datasource, sqlmapclient 만 추가해서 사용할 수 있게)
현재 기존 프로젝트 구성이 처음 화면(로그인)에서 정보를 입력하면 업체정보를 파악하여 업체에 따른 로직의 poolname 이용해서 DB를 접속하는 형태로 구현이 되어 있습니다.
DB연결 정보(업체수)는 여러개 입니다. 또한 업체마다 업무 로직은 거의 동일하며 DB 연결 정보만 틀린 상황입니다.
프레임워크의 다중 DB 구현에 대한 문의 답변은 여러개의 datasource, sqlmapclient 선언하고 dao를 상속받아서
구현하라고 되어있는 걸 봤습니다.
그런데 앞으로 업체가 얼마든지 추가 될 수 있는 상황이고, 업무별로 DAO가 추가 생성이 되어야하면 업체가 추가 될때마다 걸리는 부하가 너무 큰 것 같습니다. 위에서 언급했듯이 업체마다 업무는 거의 동일해서 추가되는 DAO에서 변경될 부분이라고는 datasource와 연결된 sqlmapclient 부분뿐이고, 업체가 추가 될때마다 추가되어야하는 DAO, SERVICE 갯수가 100개는 넘어갈 것 같은 상황입니다.
최초 로그인 정보에 따라서 DAO는 하나로 운영해서 @resource 에 sqlmapclient 맵핑하는 부분을 동적으로 변경할 수는 없을까해서 문의 드려봅니다. (업체가 추가 될때 datasource, sqlmapclient 만 추가해서 사용할 수 있게)
A
안녕하세요.. 최종민님..
Spring이 bean들이 기본적으로 singleton 방식이기 때문에.. 동적으로 dataSource나 sqlMapClient를 변경하는 것은 thread-safety하지 않습니다.
이 경우는 thread-safety하게 sqlMapClient를 변경할 수 있는 AbstractDAO가 별도로 개발되어야 합니다.
관련된 정보는 RoutableSqlMapClient로 구글링을 해보시면.. 구현시 참조하실 수 있는 블로그들을 확인하실 수 있으실 것입니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
Spring이 bean들이 기본적으로 singleton 방식이기 때문에.. 동적으로 dataSource나 sqlMapClient를 변경하는 것은 thread-safety하지 않습니다.
이 경우는 thread-safety하게 sqlMapClient를 변경할 수 있는 AbstractDAO가 별도로 개발되어야 합니다.
관련된 정보는 RoutableSqlMapClient로 구글링을 해보시면.. 구현시 참조하실 수 있는 블로그들을 확인하실 수 있으실 것입니다.
그럼.. 즐거운 하루되십시오.
감사합니다.