2012-08-30 4 views
2

나는 수백 개의 테이블을 가진 꽤 큰 어플리케이션을 가지고있다.다중 스키마/네임 스페이스와 하나의 SessionFactory를 가진 Hibernate

조직 용으로 테이블을 그룹으로 나누어서 (5 개 정도) 데이터베이스의 다른 스키마에 넣고 싶습니다. 나는 하나의 데이터베이스 만 사용하여 스키마 전체에 걸쳐 테이블을 결합 할 수 있으므로 하나의 SessionFactory 만 있습니다.

그러나 모든 스키마에서 이름 충돌이 발생하면 어떻게 될지 잘 모르겠습니다. 최대 절전 모드 개체의 코드에 다른 패키지를 쉽게 가질 수 있습니다. 문제는 아닙니다. 그러나 두 개의 엔티티가 둘 다 서로 다른 패키지에 "고객"이라고 불리는 경우 HQL에 관해서는 HQL 쿼리에서 이들을 구별하는 것이 가능합니까? 접두어 같은 거?

의견이나 제안 사항이 있으면 알려 주시기 바랍니다.

답변

1

나는 이것을 해 본 적이 없지만 기본적으로 작동해야합니다. 당신이 엔티티 이름을 사용하지 않으면 절전 모드가 같은 클래스 이름을 가지고 허용하지 않습니다

은 (this question 참조) 두 번 이상 매핑. Hibernate는 두 번 이상 사용 된 동일한 엔티티 이름을 허용하지 않는다. 클래스는 다른 것이 지정되지 않았을 때 엔티티 이름으로 클래스 이름을 갖는다.

설명서에 많은 부분이 없습니다. chapter 5.3, Mapping a class more than once을 참조하십시오.

엔티티 이름에 사용할 수 있습니다

  • 엔티티를 저장할 때 더 매핑되어 같은 클래스가 아니기 때문에 (귀하의 경우는, 엔티티 이름을 지정할 필요는 없습니다를 조회 한 번 이상.하지만 당신은 시도해야합니다.)
  • 때 매핑 참조 (여기에서 같은 : 그것은 귀하의 경우 필요는 없습니다)

행운 ;-)

+1

감사합니다, 나는 접두사로이 작업을 할 수 있습니다 생각 몇 가지 조사 후 엔티티 이름은 "스키마"로 지정됩니다. 그래서 "from Table"대신에 "from schema.Table"을 수행합니다. @Entity 주석의 name 속성을 설정하는 것은 작업을 수행하는 것 같습니다. –