java - Spring JPA 的 Multi-Tenancy

标签 java spring jpa multi-tenant

我正在为我的 Web 应用程序寻找 Multi-Tenancy 解决方案。 我想用单独的模式模型实现一个应用程序。我想每个 session 都有一个数据源。为了做到这一点,我将数据源和实体管理器放在 session 范围内,但那是行不通的。我正在考虑在用户输入用户名和密码以及 tenantId 时加载 data-access-context.xml(包括数据源和其他存储库 bean)文件。我想知道这是否是一个好的解决方案?

最佳答案

Multi-Tenancy 是一个有点棘手的主题,它必须在 JPA 提供者端处理,以便从客户端代码的角度来看没有或几乎没有变化。 支持 Multi-Tenancy (参见:EclipseLink/Development/Indigo/Multi-Tenancy),最近才添加的。

另一种方法是使用AbstractRoutingDataSource,参见:Multi tenancy in Hibernate .

使用 session-scope 风险太大(而且你最终会得到数千个数据库连接,每个 session /用户都很少。最后 EntityManager 和底层数据库连接不可序列化,因此你无法迁移您的 session 并适本地缩放您的应用程序。

关于java - Spring JPA 的 Multi-Tenancy ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9717928/

相关文章:

java - 在运行时根据条件从数据库中获取@Qualifier 名称

java - java混淆器修改方法/类/变量名的建议

java - @DataJpaTest 无法排除响应式(Reactive) mongo 存储库

java - 错误 beanFactory/ApplicationContext - JAVA

java - 如何使用 concat 函数表示 JPA 标准中的空格字符

Tomcat 中的 Hibernate 和 EJB3.1 - 需要什么才能实现这一点?

java - 了解java.nio包中的 channel

java - 将属性注入(inject)到同一类的不同实例(Spring 框架)

java - JPA 单向一对多连接表 - 实体映射不起作用

Java,如果 List 中修剪的 String 包含 String 则返回