多租户: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 对实体进行自定义验证以进行多租户设置