当前位置: 首页 > 面试题库 >

如何使用JPA在Hibernate 4中启用多租户?

祁烨
2023-03-14
问题内容

在我看来,对多租户的支持现在已经hibernate了将近六个月,此后至少更新了一次。

在JPA之外获得多租户会话看起来相当琐碎:

Session session = sessionFactory.withOptions().tenantIdentifier( "jboss" ).openSession();

但是,如何在通过JPA使用hibernate的应用程序中启用它呢?(如果可能的话)。

提前致谢。


问题答案:

您可以通过persistence.xml中的属性对其进行配置,如下所示:

<property name="hibernate.multiTenancy" value="DATABASE"/>
<property name="hibernate.multi_tenant_connection_provider" value="com.example.MyConnectionProvider" />
<property name="hibernate.tenant_identifier_resolver" value="com.example.MyTenantIdResolver" />

如果使用SCHEMA,hibernate.multi_tenant_connection_provider则不需要多租户策略。

您还可以在代码中设置这些属性,并将它们在映射中传递给Persistence.createEntityManagerFactory()。在这种情况下,您可以传递对象实例,而不仅仅是类名。

Hibernate文档中的更多信息。



 类似资料:
  • 我有一个带有3列的示例MyTable-id、common_id、creation_date,其中common_id分组条目。 现在,我想使用CriteriaBuilder从每个组中选择所有最新的条目(即每个常见的\u id获取最新的创建日期)。 SQL查询如下所示: 现在我尝试通过编写类似(cb是CriteriaBuilder,root是Root)的内容来创建place谓词: 但不幸的是。数组不是

  • 问题内容: 我需要创建一个可以管理多个数据源的服务。当首次运行应用程序时,这些数据源不一定存在,实际上,端点将创建新数据库,我希望能够切换到它们并创建数据。 例如,假设我有3个数据库,A,B和C,然后启动应用程序,使用创建D的端点,然后再使用D。 那可能吗? 我知道如何切换到其他数据源(如果存在),但是现在看不到任何解决方案可以使我的请求成为可能。你有什么主意吗? 谢谢 问题答案: 为了使用Spr

  • 我正在使用spring 3.0开发一个多租户应用程序,需要根据租户将文件上传到FTP服务器或从FTP服务器下载文件。对于每个租户,我们在同一个FTP服务器中有不同的FTP位置。您能帮助我根据租户使用spring 3配置/更改FTP位置吗。?

  • 我有一个JPA应用程序正在运行,现在我想支持多租户。我喜欢使用XML而不是注释。 我有两个orm。从持久性引用的xml。xml。 我喜欢对所有实体使用相同的多租户配置:单个表,鉴别器列是tenantUserId,上下文属性是tenant。用户ID。 根据:https://wiki.eclipse.org/EclipseLink/Examples/JPA/EclipseLink-ORM.XML 是否

  • 我正在尝试将查询转换为JPA规范,该查询包含带OR条件的连接操作。 以下是查询: 我试图编写一个规范,但在如何将多个列与OR条件连接方面遇到了障碍。 用户实体: 运营实体 我希望有一个规范来取代上面的查询

  • 问题内容: eclipselink(或Hibernate)中的租户是一个很好的概念,可以将数据域彼此分开。我在单表策略中使用eclipselink。 有时有必要从多个租户那里访问数据(例如,出于管理目的)。有什么好办法吗?(我不想遍历所有租户来收集数据…) 例: 我可以使用参数化的实体管理器访问特定租户中的对象: 有没有方便的方法可以查询所有租户?(或者持久性对象的身份仅在单个租户中定义?) 问题