多租户:Spring 与 Hibernate

Posted

技术标签:

【中文标题】多租户:Spring 与 Hibernate【英文标题】:Multitenancy: Spring Vs Hibernate 【发布时间】:2014-02-07 08:54:18 【问题描述】:

我正在探索 J2EE 世界中的多租户概念。 据我了解,多租户可以是共享 Web/App 服务器、共享数据库、共享操作系统或共享物理服务器。

如果我说 Spring 框架(尤其是 Spring Security 3.2 ?),我是对的彼此独立。 即,如果我在一层不需要多租户(比如数据库层,意思是共享数据库),我可以在应用服务器层仅使用 Spring 安全多租户功能过得愉快吗?

我们基本上要开始开发全新的项目了

前端:AngularJS 后端:SpringMVC Restful ORM:休眠 4 DB:mysql(我们没有很多钱买 Oracle 等 :))

鉴于此工具包,是否有任何好的书籍、参考资料或 github 项目可以为我们提供关于多租户(以及 Oauth)的正确方向?

谢谢!

PS:我在写作时正在网上探索各种片段。

【问题讨论】:

【参考方案1】:

多租户:- 多租户一词通常应用于软件开发,表示一种架构,其中应用程序的单个运行实例同时服务于多个客户端(租户)。这在 SaaS 解决方案中非常常见。隔离与各种租户有关的信息(数据、定制等)是这些系统中的一项特殊挑战。这包括存储在数据库中的每个租户拥有的数据。我们将重点关注这最后一部分,有时称为多租户数据。

Hibernate 4 支持:https://docs.jboss.org/hibernate/core/4.2/devguide/en-US/html/ch16.html

在hibernate 4中配置多租户并不难,不需要oracle。可能有不同的方法。

多租户数据方法:-

    独立数据库 单独的架构 分区(鉴别器)数据

说明:- 对于 Hibernate 的早期版本,您可以扩展 BasicDataSource 并根据您的实现提出自己的连接 url 逻辑。

【讨论】:

谢谢贾法尔,但这并不能完全回答我的问题。 1.我也想从springs的角度来理解多租户。如果我正在编写具有多租户功能的全新 Web 应用程序(Spring + Hibernate),我应该首先从 Springs 角度还是从 hibernate 角度开发 POC? 2. 如果我不需要共享数据库,而是共享应用程序/Web 服务器怎么办? 我想使用 Hibernate 实现基于 DISCRIMINATOR(单表共享模式模型)的多租户?有可能吗? @Ketan from hibernate docs.." 鉴别器与分区(鉴别器)方法相关。尝试使用此策略打开没有租户标识符的会话是错误的。此策略尚未实施在 Hibernate 4.0 和 4.1 中。计划在 5.0 中支持它。”

以上是关于多租户:Spring 与 Hibernate的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring + Hibernate 对实体进行自定义验证以进行多租户设置

我们如何使用hibernate作为orm单独的数据库和模式来构建一个spring mvc多租户应用程序

具有多租户休眠的 Spring-Data JPA

Spring Boot + Spring Data 多租户

如何使用 Spring Data Jpa 启用多租户

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