Подключение к базам данных клиентов в соответствии с входом пользователя в систему с помощью Hibernate и Spring

Я читал мультитенантность в hibernate и пару постов из stackru, но кажется, что они не отвечают требованию, которое у меня есть, так что вот оно. Я работаю над моделью приложений на основе SAAS, где у меня есть одно приложение, обслуживаемое несколькими клиентами, и для каждого клиента будет независимый экземпляр базы данных клиентов (postgresSql). Помимо этого у меня также есть основная база данных, которая будет использоваться для аутентификации пользователя и определения, к какой базе данных арендаторов она принадлежит, учтите, что эта основная база данных будет иметь такую ​​же информацию, как URL-адрес соединения с базой данных клиентов.

Когда пользователь входит в систему, я аутентифицирую его в базе данных master, получаю информацию базы данных арендатора, такую ​​как URL-адрес соединения, и подключаюсь к этой базе данных, и через нее обслуживаю все запросы пользователей.

Учитывая тот факт, что я могу определить несколько сессионных фабрик в конфигурационном файле hibernate, что сделает его статическим при разработке приложения, вместо этого я хотел бы динамически создавать сессионные фабории для соответствующей базы данных клиентов, к которой принадлежит пользователь, считывая информацию о соединении URL из основной базы данных.

Кроме того, также будет сценарий, в котором мне придется поддерживать сессионную фабрику базы данных master и базы данных арендаторов, так как будет требование, при котором мне придется добавлять пользователей как в базу данных master, так и в базу данных tenant во время создания пользователя.

Может ли кто-нибудь помочь решить это требование?

1 ответ

Я бы определил две сессионные фабрики, одну для главной базы данных и одну для остальных, начиная с поддельных значений. это может помочь вам в том, как изменить источник данных во время выполнения.

Наконец, threadlocal может помочь вам хранить данные между вызовами.

Надеюсь, поможет.

Другие вопросы по тегам