【问题标题】:Hibernate: Discriminator based multi tenancy using filter?Hibernate:使用过滤器的基于鉴别器的多租户?
【发布时间】:2012-10-15 11:09:59
【问题描述】:

我在网上阅读了几篇关于多租户(针对 SaaS 应用程序中的不同客户端)的文章(即 thisthatthat)。一旦您决定采用基于鉴别器的方法,hibernate doc states,版本 4 不支持此方法,但版本 5 将提供。

不过,您可能会发现几篇关于为此目的使用休眠过滤器的文章(即thisthat)。

我想知道,如果基于过滤器的解决方案可以的话,为什么在版本 5 中会有一些特殊的实现。因此:基于过滤器的解决方案的缺点是什么? (我有 read(参见 11 年 12 月 6 日的评论)他们不适用于 find 语句。但似乎没有其他来源同意这一点。这是真的吗?)

【问题讨论】:

  • 你在最小的例子中试过了吗?

标签: hibernate multi-tenant hibernate-filters


【解决方案1】:

基于过滤器的解决方案的一些缺点:

  • 持久化时,必须注意tenant_id,它不会自动持久化。或许可以使用@PrePersist 回调方法。
  • 方法 entityManager.find(EntityClass.class, "ID") 不考虑过滤器值
  • 必须像这样处理@OneToMany 关系:
     @OneToMany(cascade = CascadeType.ALL)
     @JoinColumn(name = "ARTICLE_ID")
     @Filter(name = "tenantFilter", condition = "tenant_id = :tenantId")
     private List<ArticleChild> children;

【讨论】:

  • 嘿,这是过滤器遗漏的案例的详尽列表吗?
  • 由于这个缺点,我正在考虑使用 Eclipselink
猜你喜欢
  • 1970-01-01
  • 2014-04-07
  • 2018-02-06
  • 2013-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
  • 2023-03-25
相关资源
最近更新 更多