2013-12-17 6 views
5

Ho letto il multitenancy in sospensione e un paio di post da stackoverflow ma sembra che non stiano rispondendo al requisito che ho, quindi eccolo qui. Sto lavorando a un modello di applicazione basato su SAAS in cui ho una sola applicazione servita da più clienti e per ogni cliente ci sarà un'istanza indipendente del database tenant (postgresSql). Oltre a questo ho anche un database master che verrà utilizzato per autenticare l'utente e per identificare il database tenant a cui appartiene, considerare che questo database master avrà informazioni come l'URL di connessione al database del tenant.Connessione ai database dei titolari come per l'accesso utente utilizzando Hibernate e Spring

Quando l'utente effettua l'accesso, lo autentica con il database master, ottiene le informazioni sul database tenant come l'URL di connessione e si connette a quel database e soddisfa tutti gli utenti che lo richiedono.

Considerato il fatto che posso definire più sessionfactories nel file di configurazione di ibernazione, che lo renderà statico durante lo sviluppo dell'applicazione, invece vorrei creare dinamicamente le proprietà di sessione per il rispettivo database tenant per cui l'utente appartiene leggendo il informazioni dell'URL di connessione dal database master.

Inoltre, ci sarà anche uno scenario in cui sarà necessario mantenere il sessionfactory del database master e del database tenant in quanto vi sarà un requisito in cui dovrò aggiungere utenti sia al database master che al database tenant durante creazione dell'utente.

Qualcuno può aiutare a soddisfare questo requisito?

risposta

1

Definirei due sessionfactory, uno per il master db e uno per gli altri dbs che iniziano con valori falsi. this può aiutarti a cambiare l'origine dati in fase di esecuzione.

Infine threadlocal può aiutarti a memorizzare i dati tra le chiamate.

Spero che aiuti.