mybatis로 mysql SqlConfig.xml 다중DB설정
- 작성자 :
- 김*수
- 작성일 :
- 2021-06-02 16:01:56
- 조회수 :
- 4,381
- 구분 :
- 개발환경 / 3.8
- 진행상태 :
- 완료
Q
안녕하세요. 현재 mybatis로 sqlMapConfig.xml을 설정하여 개발중인데요 .....
sqlMapConfig.xml에서 다중 DB를 설정할때 아래와 같이 설정을 하여 사용하고 있습니다.
<configutation> 이하 생략
<enviroments default="A">
<enviroment id = "A">
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc://mysql://xxx.xxx.xxx.xxx:xxxx/a"/>
<property name="username" value="abc"/>
<property name="password" value="1234"/>
</enviroment>
<enviroment id = "B">
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc://mysql://xxx.xxx.xxx.xxx:xxxx/B"/>
<property name="username" value="abc"/>
<property name="password" value="1234"/>
</enviroment>
</enviroments>로 xml 파일을 설정하였습니다.
mysql DB의 ip는 동일하며 database만 다릅니다.
SqlSessionFactory 객체를 new SqlSessionFactoryBuilder().build(inputStream, "A") / new SqlSessionFactoryBuilder().build(inputStream, "B") 를 하여 2개의 SqlSessionFactory를 생성하였는데
A와 B 모두 session 연결은 정상적으로 되지만 A는 pool 객체를 check out을 하여 사용 후 return 을 하는데 B의 경우는 pool객체를 계속 create를 해버립니다.
mybatis homepage에서 pool 속성을 확인하여 checktimeout, pingTest를 해보아도 A에만 적용이 되고 B에는 적용이 되지 않습니다 ㅜㅜ
어떻게 해야 하는지 조언 부탁드립니다.
sqlMapConfig.xml에서 다중 DB를 설정할때 아래와 같이 설정을 하여 사용하고 있습니다.
<configutation> 이하 생략
<enviroments default="A">
<enviroment id = "A">
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc://mysql://xxx.xxx.xxx.xxx:xxxx/a"/>
<property name="username" value="abc"/>
<property name="password" value="1234"/>
</enviroment>
<enviroment id = "B">
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc://mysql://xxx.xxx.xxx.xxx:xxxx/B"/>
<property name="username" value="abc"/>
<property name="password" value="1234"/>
</enviroment>
</enviroments>로 xml 파일을 설정하였습니다.
mysql DB의 ip는 동일하며 database만 다릅니다.
SqlSessionFactory 객체를 new SqlSessionFactoryBuilder().build(inputStream, "A") / new SqlSessionFactoryBuilder().build(inputStream, "B") 를 하여 2개의 SqlSessionFactory를 생성하였는데
A와 B 모두 session 연결은 정상적으로 되지만 A는 pool 객체를 check out을 하여 사용 후 return 을 하는데 B의 경우는 pool객체를 계속 create를 해버립니다.
mybatis homepage에서 pool 속성을 확인하여 checktimeout, pingTest를 해보아도 A에만 적용이 되고 B에는 적용이 되지 않습니다 ㅜㅜ
어떻게 해야 하는지 조언 부탁드립니다.
환경정보
-
- OS 정보 :
- 표준프레임워크 버전 : 3.8.1 64bit
- JDK(JRE) 정보 : 1.6
- WAS 정보 :
- DB 정보 : Mysql
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터 입니다.
문의하신 부분에 대하여
센터에서 확인된 부분이 없습니다.
Mybatis 공식사이트에서 매뉴얼을 참조하시고
확인을 하셔야 할듯합니다.
https://mybatis.org/mybatis-3/ko/configuration.html#environments
감사합니다.
표준프레임워크센터 입니다.
문의하신 부분에 대하여
센터에서 확인된 부분이 없습니다.
Mybatis 공식사이트에서 매뉴얼을 참조하시고
확인을 하셔야 할듯합니다.
https://mybatis.org/mybatis-3/ko/configuration.html#environments
감사합니다.