복붙노트

[SPRING] 여러 데이터 소스를 사용하는 Hibernate + Spring?

SPRING

여러 데이터 소스를 사용하는 Hibernate + Spring?

나는 Spring MVC 2.5와 Hibernate를 사용하는 웹 애플리케이션에서 일하고있다.

응용 프로그램의 요구 사항 중 하나는 일부 개체를 외부 데이터베이스로 내보낼 수 있어야한다는 것입니다. 기존 데이터 레이어를 사용하고 개체를 외부 소스에 저장할 수도 있습니다.

저는 Spring과 Hibernate에 익숙하지 않습니다. 그리고 저는 이것이 어떻게 접근해야하는지 궁금합니다. 현재 모든 것은 주석을 통해 자동으로 연결됩니다. 나는 새로운 dataSource bean과 새로운 sessionFactory, 그리고 transactionManager를 생성해야한다고 생각한다. 아마도 ... 그러나 ...

나는 누군가가 이런 일을하는 기본적인 과정을 통해 나를 조장 할 수 있다면 특별히 위의 질문에 대한 답을 필요로하지 않는다고 생각한다. 감사!

해결법

  1. ==============================

    1.다행스럽게도 Spring에는 이미이 솔루션 인 AbstractRoutingDataSource가있다. 그것은 기본적으로 여러 DataSource의 Facade로 작동하며 하위 클래스로 사용하고 어떤 DataSource를 사용해야하는지 결정하는 데 필요한 논리를 구현할 수 있습니다. 몇 가지 세부 사항은 다음과 같습니다.

    다행스럽게도 Spring에는 이미이 솔루션 인 AbstractRoutingDataSource가있다. 그것은 기본적으로 여러 DataSource의 Facade로 작동하며 하위 클래스로 사용하고 어떤 DataSource를 사용해야하는지 결정하는 데 필요한 논리를 구현할 수 있습니다. 몇 가지 세부 사항은 다음과 같습니다.

    http://blog.springsource.com/2007/01/23/dynamic-datasource-routing/

    이를 통해 DataSource 조회 논리를 정확히 한 곳에서 처리 할 수 ​​있습니다. AbstractRoutingDataSource의 서브 클래스를 Hibernate SessionFactory에 삽입해야한다는 것을 제외하고는 DAO 레이어와 SessionFactory를 조정할 필요가 없습니다.

  2. ==============================

    2.스프링 컨텍스트에서 여러 데이터 소스와 세션 팩토리를 구성하는 것은 그 자체로 문제가되지 않지만 autowiring을 덜 매력적으로 만듭니다.

    스프링 컨텍스트에서 여러 데이터 소스와 세션 팩토리를 구성하는 것은 그 자체로 문제가되지 않지만 autowiring을 덜 매력적으로 만듭니다.

    당신은 @Qualifier 어노테이션을 사용하여 autowiring에게 어느 것을 선택할지를 말할 수 있지만 autowiring을 사용하지 말고 또는 를 사용하여 올바른 데이터 소스와 세션 팩토리를 명시 적으로 주입하는 것이 좋습니다.

    두 데이터 소스가 앱 서버에 의해 관리되는 경우 두 데이터 소스간에 트랜잭션 관리자가 잠재적으로 공유 될 수 있지만 두 데이터 소스에서 트랜잭션 무결성을 요구하는 것은 아니며 각 데이터 소스에 대해 별도의 트랜잭션이있는 것처럼 들릴 수도 있습니다 충분할거야.

  3. from https://stackoverflow.com/questions/860918/hibernate-spring-using-multiple-datasources by cc-by-sa and MIT license