2017-02-18 1 views
0

MVC에 Hnibernate가 서버에 배포 된 응용 프로그램이 있습니다. 현재 하나의 클라이언트 만이 응용 프로그램을 사용하고 있습니다. 이제 많은 클라이언트가 있고 다른 모든 데이터베이스에서이 앱을 사용하지만 스키마는 모두 동일합니다. 이 구현에 대한 접근 방식을 생각 중입니다. 개별 클라이언트 데이터베이스 연결 문자열에 관한 정보를 테이블에 저장하는 새 데이터베이스를 만들었습니다.
응용 프로그램이 실행되면 Nhiberate는 모든 클라이언트 데이터베이스와 기본 데이터베이스를 포함하는 모든 데이터베이스에 대해 여러 세션 팩토리를 만듭니다. 예를 들어, 데이터베이스 이름이 'A_db'및 'B_db'인 두 개의 클라이언트 'A'와 'B'가 있습니다. 그리고 연결 문자열을 'All_db'로 유지하는 다른 메인 데이터베이스. 그런 다음이 경우 nhibernate가 세 개의 db에 대해 세 개의 세션 팩토리를 만듭니다. 그래서 사용자가 로그인 자격 증명을 입력하면 주 데이터베이스에서 해당 클라이언트에 대한 관련 연결 문자열을 확인합니다. 해당 클라이언트 데이터베이스 연결 문자열과 관련이없는 모든 세션 팩토리를 파기하십시오. 이렇게하면 자신의 데이터베이스에 속한 하나의 세션 팩토리가 남아있게됩니다. 내 접근 방식이 맞습니까 ?? 그리고 올바른 방향으로 가고 여러 세션 팩토리를 만들고 이와 관련된 모든 세션 팩토리를 제거한 후이 접근법에 대한 몇 가지 코드를 제공합니까?Nhibernate에서 Multitenant를 MVC의 Spring과 함께 사용하는 방법

+0

하나의 데이터베이스와 하나의 데이터베이스에 각각의 테이블에 Client_Id 열을 추가하기 만하면 클라이언트별로 데이터베이스가 분리되는 이유는 무엇입니까? –

+0

별도의 데이터베이스에 대한 응용 프로그램과 클라이언트의 필요성을 모두 충족시킵니다. –

답변

0

GetSession 메서드에 연결 문자열을 제공 할 수 있습니다. 더 많은 정보를 얻으려면 link을 확인하십시오.

관련 문제