Продукт, над которым я работаю, имеет один экземпляр базы данных MSSQL, а внутри у нас есть отдельная схема для каждого клиента. Все эти схемы имеют одинаковую структуру таблицы. Мы используем гибернацию мультитенантности. У нас есть один источник данных в нашей конфигурации Wildfly. Теперь то, что мы делаем в нашем коде Java, на основе идентифицированного клиента, мы подключаемся к этой базе данных в том же экземпляре базы данных. Мы делаем это, запуская запрос «Use [XYZ]», а затем возвращая соединение через Hibernate Multi-tenancy. Когда я читаю о Hibernate Multi-tenancy, он говорит, что данные для каждого клиента должны находиться в физически отдельном экземпляре базы данных. Что не так в нашей среде.
Вот ссылка на Hibernate: http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch16.html
Мой вопрос здесь заключается в том, как будет осуществляться пул соединений в этом случае, поскольку у нас есть один источник данных, настроенный в Wildly? Этот источник данных используется всеми клиентами и повторно запускает несколько соединений на основе идентификатора клиента. Это хороший подход, учитывая, что клиенты добавляются во время выполнения? В этом случае должен быть отдельный пул соединений?
Statement = connection.createStatement ();
Statement.execute ("use [" + databaseName + "]");