Hibernate:基于判别器的多租户使用过滤器?

时间:2012-10-15 11:09:59

标签: hibernate multi-tenant hibernate-filters

我在网上看过几篇关于多租户的文章(即thisthat以及that)(针对SaaS应用程序中的不同客户)。一旦您决定采用基于鉴别器的方法hibernate doc states,这在版本4中不受支持,但将在第5版中出现。

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

我想知道,为什么在版本5中会有一些特殊的实现,如果基于过滤器的解决方案没问题。因此:基于过滤器的解决方案有哪些缺点? (我有read(参见06 / Dec / 11的评论)他们不能使用find语句。但是没有其他的资源似乎赞同这一点。这是真的吗?)

1 个答案:

答案 0 :(得分:3)

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

  • 当持久化时,必须注意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;
相关问题