使用Hibernate和Spring按用户登录连接到租户数据库

时间:2013-12-17 07:13:35

标签: database spring hibernate multi-tenant sessionfactory

我一直在阅读hibernate中的多租户和来自stackoverflow的几个帖子,但似乎它们没有满足我的要求,所以在这里。我正在开发一个基于SAAS的应用程序模型,其中我有一个应用程序由多个客户提供服务,并且对于每个客户,将有一个独立的租户数据库实例(postgresSql)。除此之外,我还有一个主数据库,用于验证用户并识别它所属的租户数据库,请考虑此主数据库将具有与租户数据库的连接URL之类的信息。

当用户登录时,i将使用master数据库对其进行身份验证,获取租户数据库信息(如连接URL)并连接到该数据库并通过该服务器提供所有用户请求。

考虑到我可以在hibernate配置文件中定义多个会话事件,这将使其在应用程序开发期间保持静态,而不是我想通过读取信息为用户所属的相应租户数据库动态创建会话事件来自master数据库的连接URL。

此外,还有一个场景,我将不得不维护master数据库和租户数据库的sessionfactory,因为有一个要求我将不得不在用户期间将用户添加到master数据库和租户数据库创建

任何人都可以帮助解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

我会定义两个sessionfactory,一个用于master db,另一个用于其他以false值开头的dbs。 this可以帮助您了解如何在运行时更改数据源。

最后,threadlocal可以帮助您在调用之间存储数据。

希望它有所帮助。