복붙노트

[SPRING] 스프링 JPA로 멀티 테넌시

SPRING

스프링 JPA로 멀티 테넌시

내 웹 응용 프로그램에 대한 멀티 테넌시 솔루션을 찾고 있습니다. 별도의 스키마 모델을 사용하여 응용 프로그램을 구현하고 싶습니다. 세션 당 데이터 소스가 있다고 생각합니다. 그것을하기 위해 세션 범위에 datasource와 entitymanger를 넣었으나 작동하지 않습니다. 사용자가 username과 password 및 tenantId를 입력하면 data-access-context.xml (데이터 소스 및 기타 저장소 빈 포함) 파일을로드하려고 생각합니다. 좋은 해결책인지 알고 싶습니다.

해결법

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

    1.멀티 테넌시는 다소 까다로운 주제이며 JPA 제공자 측에서 처리해야하므로 클라이언트 코드 관점에서 거의 또는 전혀 변경되지 않습니다. eclipselink는 멀티 테넌시 (EclipseLink / Development / Indigo / Multi-Tenancy 참조)에 대한 지원을 제공하며 최근에 최대 절전 모드로 추가되었습니다.

    멀티 테넌시는 다소 까다로운 주제이며 JPA 제공자 측에서 처리해야하므로 클라이언트 코드 관점에서 거의 또는 전혀 변경되지 않습니다. eclipselink는 멀티 테넌시 (EclipseLink / Development / Indigo / Multi-Tenancy 참조)에 대한 지원을 제공하며 최근에 최대 절전 모드로 추가되었습니다.

    또 다른 접근법은 AbstractRoutingDataSource를 사용하는 것이다. Hibernate에서 다중 소유 (multi tenancy).

    세션 범위를 사용하는 것은 너무 위험합니다 (수천 개의 데이터베이스 연결로 끝나고 모든 세션 / 사용자에 대해 거의 끝나지 않을 것입니다.) 마지막으로 EntityManager와 기본 데이터베이스 연결은 직렬화 할 수 없으므로 세션을 마이그레이션하고 응용 프로그램을 올바르게 확장 할 수 없습니다.

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

    2.나는 다수의 멀티 테넌시 시스템을 가지고 일했다. 여기서의 도전은 여러분이

    나는 다수의 멀티 테넌시 시스템을 가지고 일했다. 여기서의 도전은 여러분이

    먼저 두 번째 도전을 살펴 봅시다. 멀티 테넌시 시스템은 용량이 다른 여러 테넌트가 동일한 데이터 (레코드)에 액세스 할 수있는 유스 케이스 (예 : https://bugs.eclipse.org/bugs/show_bug.cgi)를 지원해야하는 경우에 발전하는 경향이 있습니다. ? id = 355458). 따라서 시스템에는 궁극적으로 액세스 제어 목록이 필요합니다.

    공개 아키텍처를 유지하려면 JPA와 같은 표준을 코딩 할 수 있습니다. EclipseLink 나 Hibernate 로의 코딩은 나를 불편하게 만든다.

    Spring Security ACL은 이러한 두 가지 문제에 대해 매우 유연한 커뮤니티 지원 솔루션을 제공합니다. 시도 해봐. 나는 그것의 성능에 만족했고 행복했다. 그러나, 나는 당신 주위에 내 머리를 얻기 위해 파고 들었다.

  3. from https://stackoverflow.com/questions/9717928/multitenancy-with-spring-jpa by cc-by-sa and MIT license