EclipseLink中@multitenant(SINGLE_TABLE)和@multitenant(VPD)之间的区别

时间:2015-03-17 13:30:30

标签: eclipselink multi-tenant

尽管我在互联网上搜索了很多并阅读了很多文章,但我仍然无法区分 Single_Table 策略和 VPD 策略 的EclipseLink 即可。

起初我认为“VPD”是“独立数据库策略”的实现,但后来我发现我们在两种策略中对所有租户使用相同的表。

有人可以澄清这两种策略之间的区别吗?

1 个答案:

答案 0 :(得分:2)

主要区别在于过滤完成的级别。

使用SINGLE_TABLE多租户时,EclipseLink负责在所有生成的查询中包含tenant_id

使用VPD时,过滤在数据库级别完成。因此,EclipseLink将生成不包含tenant_id的SQL查询,数据库将负责过滤。

来自documentation

的引用
  

VPD允许用户将自己标识为特定用户,并且能够“查看”特定于该用户的数据。所有结果限制都在数据库级别完成,无需发送包含其他比较的特殊SQL。