2011-08-20 4 views
3

이 항목에 대한 질문을 찾지 못했습니다. 나는 실제로 하나 이상의 데이터 소스를 사용하는 무언가를 다루지 못했습니다. 한 예는 두 개의 데이터 소스가 필요한 ETL입니다. 그러한 응용 프로그램은 어떻게 설계 될 수 있습니까?두 개 이상의 데이터 소스가있는 경우

+0

'@ EntityManager'를 사용하면 엔티티 관리자를 가질 데이터 소스를 지정할 수 있지만 여기에는 특정 질문이 없습니다. –

+0

ETL의 경우 두 개의 데이터 소스가 동시에 필요합니다. 나는 이것을 발견했다. (http://forum.springsource.org/showthread.php?50123-JPA-with-multiple-persistence-units) 그것을 이해하려고 노력했다. Spring 설정에서 두 개의 서로 다른 EntityManager를 정의하는 방법을 볼 수 있지만 두 개의 영속 단위를 정의하는 것은 어떨까요? 또한 DAO가 소스 및 대상 데이터베이스에 대해 동일 할 것이라고 생각합니다. 동일한 클래스에서 자신의 EM을 사용하여 두 개의 DAO 인스턴스를 가질 수 있습니까? –

답변

4

두 개의 데이터 원본, 두 개의 개별 이름. 각각의 빈 ID로 각각을 주입하십시오.

<bean id="fromDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${from.jdbc.driverClassName}"/> 
    <property name="url" value="${from.jdbc.url}"/> 
    <property name="username" value="${from.jdbc.username}"/> 
    <property name="password" value="${from.jdbc.password}"/> 
</bean> 

<context:property-placeholder location="from.jdbc.properties"/> 

<bean id="toDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${to.jdbc.driverClassName}"/> 
    <property name="url" value="${to.jdbc.url}"/> 
    <property name="username" value="${to.jdbc.username}"/> 
    <property name="password" value="${to.jdbc.password}"/> 
</bean> 

<context:property-placeholder location="to.jdbc.properties"/> 

하나의 DAO를 갖고 싶지만 두 개의 인스턴스가 필요합니다. 각 인스턴스에는 자체 데이터 소스가 있습니다. 하나는 소스에서 선택하고, 다른 하나는 목표로 INSERT합니다.

더 좋은 방법은 Spring을 피하고 데이터베이스에 내장 된 대량 전송 메커니즘을 사용하는 것입니다.

+0

감사합니다. 두 데이터 소스에 대해 어떻게 다른 연결 설정을 정의 할 수 있습니까? 나는 하나의 persistence.xml을 갖는 데 익숙하다. 또한 원본 데이터베이스와 대상 데이터베이스의 구조가 실질적으로 동일한 경우 다른 DAO 클래스를 정의 하시겠습니까? –

관련 문제