0
오라클 다중 사용자 공간 연결에 spring ibatis를 사용합니다.spring3 ibatis2.x 다중 데이터 소스
사용자 A, 사용자 B, 사용자 시스템처럼 보입니다.
사용자 시스템은 항상 사용됩니다. 다른 사용자 동안 작업 (스레드)에서 opration
spring.xml 다오에서
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="System" />
<property name="password" value="system" />
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="A" />
<property name="password" value="a" />
</bean>
<bean id="dataSource3" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="B" />
<property name="password" value="b" />
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlMapClient1" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource2" />
</bean>
<bean id="sqlMapClient2" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation" value="classpath:SqlMapConfig.xml" />
<property name="dataSource" ref="dataSource3" />
</bean>
:
public class BaseDao extends SqlMapClientDaoSupport {
Logger log = Logger.getLogger(getClass());
@Resource(name = "sqlMapClient")
private SqlMapClient sqlMapClient;
@PostConstruct
public void initSqlMapClient() {
super.setSqlMapClient(sqlMapClient);
}
}
public class UserDao extends BaseDao {
public void test()
{
this.getSqlMapClientTemplate().queryForObject("....");
}
}
작업 : 내가 다른 datasorce을 opration 할 taskJob에. 그것을 구현하는 방법?
public class TaskJob {
//@Autowired
//UserDao userDao;
public void test(){
//to get other sqlmapclient in UserDao
userDao.test();//for User A,User B,User ....
}
}
감사합니다. 그러나이 솔루션은 너무 많은 문제가 있습니다. 오라클 사용자가 많이 있습니다.이 사용자를 스레드에서 순환시켜야합니다. – zt9788
SqlMapClientDaoSupport는 단 하나의 SqlMapClient를 지원하도록 설계되었습니다. 기존 코드로 무엇이든 할 수 있습니다 .. – ArunM
다음과 같이 스프링 (aop)을 사용하지 않고 직접 DataSource를 만들 수 있습니까 : for (DataSource dt ...) (새 UserDao() .set (dt);) – zt9788