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

Posted

技术标签:

【中文标题】使用 Hibernate 和 Spring 根据用户登录连接到租户数据库【英文标题】:Connecting to tenant databases as per the user login using Hibernate and Spring 【发布时间】:2014-01-04 20:33:31 【问题描述】:

我一直在阅读休眠中的多租户和来自 *** 的几篇文章,但似乎它们没有解决我的要求,所以就在这里。我正在研究基于 SAAS 的应用程序模型,其中我有一个应用程序由多个客户提供服务,并且对于每个客户,都会有一个独立的租户数据库实例(postgresSql)。除此之外,我还有一个主数据库,用于对用户进行身份验证并识别它属于哪个租户数据库,考虑这个主数据库将包含诸如到租户数据库的连接 URL 之类的信息。

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

考虑到我可以在休眠配置文件中定义多个会话工厂,这将使其在应用程序开发期间保持静态,相反我希望通过读取信息为用户所属的各个租户数据库动态创建会话工厂来自主数据库的连接 URL。

另外,还有一种情况,我必须维护主数据库和租户数据库的会话工厂,因为我需要在用户期间将用户添加到主数据库和租户数据库创作。

谁能帮助解决这个要求?

【问题讨论】:

【参考方案1】:

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

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

希望对您有所帮助。

【讨论】:

以上是关于使用 Hibernate 和 Spring 根据用户登录连接到租户数据库的主要内容,如果未能解决你的问题,请参考以下文章

Java Spring Hibernate没有根据我的实体创建表[重复]

Spring+Hibernate,Autowire sessionFactory 到 hibernate DAO

maven搭建Struts2+Hibernate+Spring

如何在spring boot和hibernate中计算特定id的记录

如何使用 Spring 清除所有 Hibernate 缓存(ehcache)?

在Spring中使用Hibernate 4