2012-01-26 1 views
1

현재 컨텍스트를 기반으로 다른 데이터베이스에 연결하는 사용자 지정 연결 문자열 공급자가 있습니다.첫 번째 및 두 번째 수준 캐시에서 ID를 평가할 때 SessionFactory 연결 문자열이 사용됩니까

이렇게하면 모든 데이터베이스에 동일한 SessionFactory가 사용됩니다.

다른 데이터베이스에서 동일한 식별자 (즉, 기본 키)를 가진 엔티티가 있다고 가정 할 때, 첫 번째 또는 두 번째 레벨 캐시에서 항목을 검색 할 때이를 고려해야할까요?

따라서 Db-1에 대한 Entity-1이 2 차 레벨 캐시에 있고 Db-2에 대해 Entity-1을 요청하면 NHibernate가 캐시 (올바르지 않은) 또는 Db-2 데이터베이스 (올바른)에서 엔티티를로드합니다.

데이터베이스 이름/스키마 개체를 검색하는 중 첫 번째 또는 두 번째 레벨 캐시를 사용하지 않습니다 : 좀 더 연구 (즉 here) 후

+0

필자는 DB 당 세션 팩토리가 항상 1 개만 있어야한다는 것을 알고 있습니다. – Chev

+0

스키마마다 동일한 적용이 적용됩니까? –

+0

흠, 확실하지 않음 Ben – Chev

답변

1

.

두 번째 레벨 캐시가 세션 팩토리에 연결되어 있지만 사용하는 캐시 공급자는 파티션이 보장되지 않습니다 (here 참조).

(캐시 공급자가 지원한다고 가정)의 해결책은 캐쉬가 세입자별로 고유하도록 RegionPrefix을 설정하는 것입니다.

관련 문제