2012-07-20 4 views
0

두 개의 별도 db 스키마 (Oracle의 전문 용어로는 2 명의 사용자 테이블) - schemaA와 schemaB가 있습니다.Hibernate : 하나의 객체를 초기화하는 두 개의 데이터 소스

schemaA, 다른 테이블들,이 테이블 :

domain(id NUMBER PK, description(VARCHAR2(10))

schemaB는이 테이블 :

q_user(id NUMBER PK, username VARCHAR2(8) NOT NULL, domain_id NUMBER, CONSTRAINT foreign key references schemaA.domain(id))

자바 클래스 QUSER에는 다음과 같은 속성이 있습니다 Long id, String username, Domain domain

질문 : 구성이 가능합니까? 두 개의 다른 데이터 소스 (schemaA와 schemaB)를 사용하여 QUERZ 객체를 초기화하려면 최대 절전 모드로 전환 하시겠습니까? 그렇다면 어떻게해야합니까?

또한 Spring 3, Hibernate 3.6 및 Oracle 10g를 사용하고 있습니다.

여러 데이터 소스를 정의하고이를 동적으로 바꾸기 위해 Spring 기술을 사용했지만,이 기능을 사용하여 단일 객체를 초기화 할 수 있는지 확신 할 수 없습니다.

도움을 주시면 감사하겠습니다. 감사합니다.

답변

1

도메인 매핑에서 스키마 이름도 입력 할 수 있습니다. XML로

:

<class name="Domain" table="domain" catalog="schemaA"> 

주석 :

@Table(name = "domain", schema = "schemaA") 

그런 다음, 여러 데이터 소스를 필요가 없습니다. (- 따라서 외래 키는 schemaA 테이블에 액세스 할 수있는 권한이있는 schemaB 테이블에 있기 때문에) 당신은 schemaB 사용자를 사용하여 연결하는 하나의 데이터 소스를 설정합니다.

+0

감사! 이것은 좋은 것처럼 보이지만 질문을 깨끗하게 유지하기 위해 도메인과 사용자의 관계를 1에서 1로 유지했지만 실제 생활에서는 다 대다가 있습니다. 따라서 중간에 user_domain (user_id NUMBER, domain_id NUMBER)이 교차 테이블이 있습니다. 도메인 모델 클래스에 스키마 (또는 카탈로그)를 추가하려고 할 때 - 그러한 테이블 또는 뷰 오류가 없습니다. 생성 된 sql을 보면 "... from Domain ..."(schemaA.Domain이어야 함)의 도메인에 스키마가 적용되지 않습니다. 이 다 대다 관계는 다른 경우라고 생각합니다. 제발 저를 올바른 방향으로 안내해 주시겠습니까? 많은 감사합니다 –

+0

@ damo_inc 당신은 XML이나 주석을 사용하고 있습니까? 다시 점검했고 XML에도 스키마 속성이 있습니다. –

+0

특수 효과를 사용하고 있습니다. 다른 스키마의 테이블에 동의어를 작성하여 문제를 해결했습니다. 다행스럽게도 저는 두 스키마 모두에 대한 완전한 sys 액세스 권한을 가지고 있습니다. :) 당신의 도움에 많은 감사드립니다. –

관련 문제