나는 약간의 구현 아이디어, 그것이 가능하다고 생각 : 나는 데이터 소스 플러그인 + 사용자 정의 데이터 소스 클래스를 사용하십시오
. DataSources Plugin을 사용하여 master 데이터베이스와 고객 별 데이터베이스를 가리키는 도메인 클래스를 분리 할 수 있습니다.
고객 데이터베이스로 라우팅하기 위해 고유 한 DataSource 클래스를 만들 수 있습니다. 맞춤 클래스를 org.springframework.jdbc.datasource.DelegatingDataSource에서 확장하는 것이 좋습니다. 사용자 정의 DataSource가 사용할 대상 DataSource를 결정합니다. 데이터 소스 풀을 만들어야합니다. 여러분은 pool을 구현하기 위해 commons.apache.org/pool/를 사용할 수 있습니다. 데이터 소스 풀은 일부 비활성 시간 후에 데이터 소스 (연결 풀)를 닫을 수 있습니다.
ThreadLocal을 사용하여 어떤 고객이 로그인했는지 "풀의 데이터 소스"풀에 알리고 그 정보를 사용하여 올바른 대상 데이터 소스를 선택 (즉석에서 작성) 할 수 있습니다.
특정 Hibernate 캐시 구현을 구현하지 않는 한 (데이터 소스와 동일한 "라우팅 아이디어"를 사용하여 가능해야 함) 고객 별 클래스에 대한 모든 Hibernate 캐싱을 해제해야합니다.
resources.groovy의 기본 데이터 소스 bean을 사용자 정의 버전으로 대체 할 수 있습니다. DataSource Plugin faq (grails.org/plugin/datasources#faqTab)을 참조하십시오.
데이터 소스/데이터베이스 풀 구현으로 Tomcat JDBC Pool (JDBC-Pool Grails 플러그인 : grails.org/plugin/jdbc-pool)을 권하고 싶습니다. BoneCP (jolbox.com/)는 유망 해 보였지만 테스트하지 않았습니다.
당신의 질문에 대한 답을 모르겠다. (나는 컴파일 타임에 정의 된 것처럼 최대 절전 모드에서는 불가능하다고 느낀다.)하지만 그것은 신이 꺼져있다. 행운을 빌어 요 – Jay