可用版本:Dev (3.21) | 最新 (3.20) | 3.19

策略

适用于 ❌ 开源版   ✅ Express 版   ✅ 专业版   ✅ 企业版

策略是 jOOQ 实现客户端行级别安全的主要方式,通过转换 DML 语句,使某些行对于运行 jOOQ 查询的客户端不可见。一个流行的用例是基于行的多租户,例如通过在所有表的 TENANT_ID 列上指定 条件

例如,Configuration 可能会在 CUSTOMER 表上声明 org.jooq.Policy,以过滤掉 CUSTOMER.TENANT_ID = 42。用户编写如下查询:

create.select(CUSTOMER.ID, CUSTOMER.NAME)
      .from(CUSTOMER)
      .fetch();

但有了策略,jooq 将呈现此查询:

SELECT CUSTOMER.ID, CUSTOMER.NAME
FROM CUSTOMER
WHERE CUSTOMER.TENANT_ID = 42

不仅查询,所有 DML 语句都会受到影响。很容易看出这同样适用于具有 WHERE 子句的 UPDATE 语句DELETE 语句,但也适用于 INSERT 语句

以下部分将更详细地解释该功能。

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo