Ho un sistema in cui è presente un numero sconosciuto di tenant (diverse istanze di database sullo stesso server di database). Ho un codice funzionante nel quale un utente accede e il tenant corretto è selezionato, e posso leggere la tabella di configurazione per quel tenant.Tabelle di query tra più titolari (stesso nome tabella)
Desidero che l'applicazione al momento dell'inizio ricerchi tutti gli inquilini, legga la configurazione e agisca su di essa. Prima di passare a Spring Data JPA (supportato da ibernazione), questo era facile poiché stavo connettendo separatamente ogni istanza di database.
Non penso di poter utilizzare Spring @Transactional
in quanto consente di impostare un'unica connessione.
Spero di utilizzare la stessa interfaccia di repository con lo stesso bean, poiché funziona quando devo solo colpire un tenant alla volta.
Ho un class MultiTenantConnectionProviderImpl extends AbstractDataSourceBasedMultiTenantConnectionProviderImpl
che mi darà un dataSource per un dato tenant, ma non sono sicuro di come usarlo in un metodo della classe @Service
?
Quando si dice "leggere la configurazione" si intende una tabella nel database di ciascun titolare? Potresti dare un'occhiata a questo blog [post] (http://anakiou.blogspot.my/2015/08/multi-tenant-application-with-spring.html) che potrebbe darti qualche idea. Se si dispone di un elenco di origini dati, penso che non sarà difficile eseguirne il looping all'avvio dell'applicazione. – Mustafa
utilizzando la "tabella di configurazione" come esempio potrebbe essere stata una cattiva scelta, perché può confondere le cose. In realtà ho alcune cose che dovranno essere lette in tutti gli inquilini per vari motivi. Il post del blog che fornisci suggerisce di conoscere le origini dati in primo piano, qualcosa che non conosco. –
Per multi-tenant intendi qualcosa come avere una tabella chiamata 'users' che appare in più database come' dropbox_db', 'google_drive_db',' sky_drive_db' etc sul server del database? – Saheed