티스토리 뷰
서론
웹 어플리케이션을 만들다 보면 한 어플리케이션이 여러 개의 데이터베이스 혹은 여러개의 스키마에서 정보를 가져와서 서비스를 만들어야 하는 경우가 있을 수 있다. 이번에 나같은 경우는 조회 서비스인데 연도를 기준으로 스키마를 나눠서 데이터를 저장하게 되며 해당 연도별 스키마는 서로 합쳐져 조회될 경우 없고 각 스키마에 존재하는 테이블들은 모두 동일한 상태라는 요구사항이 있었다. 이와 같은 경우에 생각 할 수 있는 부분은 당연히 여러개의 DataSource를 생성해야 한다는 것인데 그 이유는 DataSource를 사용하기 위해 사용하는 Database URL정보가 Schema기준이라는 점에서이다. (ex. jdbc:mysql://localhost:3306/2015 -- 2015 schema)
또한 사용자가 정보 조회 시 연도를 필수적으로 넘겨준다는 것을 감안해 볼 때 FactoryMethod를 사용해서 사용자가 요청하는 값에 따라 DataSource를 유동적으로 변경되게 하는 방법을 생각해 볼 수 있다.
이번 포스팅에서는 이런 경우에 SpringBoot에서 어떻게 DataSource를 여러개 선언하고 FactoryMethod를 이용해서 요청에 따라 변경되는 SqlSession을 사용하는 법에 대해서 기록한다. 사용한 ORM은 Mybatis이다.
SpringBoot Multi DataSource 설정
먼저 SpringBoot에 기본적으로 존재하는 application.properties 파일에 설정 정보를 기록한다.
위와 같이 설정 정보를 입력하고 나면 각 DataSource에 대한 설정을 위한 Bean설정이 필요하다. 이와 동시에 Mybatis를 사용할 것이기에 SqlSession 관련 인스턴스에 대한 생성 설정도 필요하다.
하지만 이제는 연도별로 사용되는 SqlSession이 달라 위와 같은 형태는 사용하기 어렵다. 그래서 사용할 수 있는 방법이 아래와 같이 FactoryMethod를 사용하는 것이다.
'SpringBoot' 카테고리의 다른 글
SpringBoot CORS 문제 해결하기 (2) | 2016.11.18 |
---|---|
SpringLoaded를 이용한 서버재시작없이 개발 (0) | 2016.11.15 |