В настоящее время мы используем EclipseLink в качестве реализации JPA для нового кода. Старый код выполнял мультитенантность с описанием решения следующим образом:
каждый клиент (арендатор) должен иметь свою собственную базу данных - отдельные ресурсы JDBC.
Информация о выбранном арендаторе передается через вызовы методов в ThreadLocal
Переменная TENANT, объявленная в классе com.aaa.Instance.java.
Ресурсы JDBC обрабатываются com.aaa.TenantDataSource.
Во время инициализации TenantDataSource ищет зарегистрированные источники данных.
в контексте java: comp / env / jdbc JNDI и проверяет, начинается ли их имя с «abc_».
Ссылки на источники данных хранятся во внутренней карте с использованием кода клиента из JNDI.
имя ресурса (источник данных с именем «abc_xx» зарегистрирован как источник данных для экземпляра «xx»).
TenantDataSource проверяет значение переменной Instance.TENANT, когда 'getConnection'
вызывается для использования соответствующего источника данных.
TenantDataSource возвращается к источнику данных по умолчанию, если Instance.TENANT имеет значение NULL
значение. Это может быть поведение по умолчанию для развертываний с одним владельцем.
Теперь мы используем EclipseLink, я погуглил, чтобы посмотреть, смогу ли я реализовать мультитенант по мере необходимости. Похоже, EclipseLink может сделать:
* Одностоловый мульти-аренда
* таблица на одного арендатора
* (VDP) мультитенантность
не похоже на Hibernate, который поддерживает базу данных для каждого арендатора.
Может кто-нибудь сказать, правильно ли мое исследование?
Спасибо