Java 基于DSL的数据过滤
我们的是特定于某个领域的产品。以下是一些典型的安全用例Java 基于DSL的数据过滤,java,sql,hibernate,dsl,Java,Sql,Hibernate,Dsl,我们的是特定于某个领域的产品。以下是一些典型的安全用例 普通用户只能编辑其个人资料数据或基于权限的任何人数据 一个用户只能看到属于其部门的数据,而另一个用户可以看到来自所有部门的数据 这些需求随着客户的不同而变化,因此我们不能在应用程序代码中硬编码过滤逻辑,也不能维护应用程序的多个版本 我们使用基于Hibernate标准的过滤,并喜欢根据与权限相关联的一些表达式添加额外的限制。上面提到的用例1的表达式可能如下所示,'userId=user.userId',其中'user'是一个关键字,表示当前经
'userId=user.userId'
,其中'user'是一个关键字,表示当前经过身份验证的用户,'userId'是为其创建条件的对象的属性
我们想要定义一个dsl,使用它我们可以导出sql的条件限制以及where子句
是否有任何现有的框架可以让我们做到这一点,而不必使用dsl?基于上面提到的用例,您认为它可以以不同的方式实现吗
附加信息:我们只定义带有一些元信息的域对象来生成UI。持久性、安全性等由我们的核心框架负责。您测试过Hibernate过滤器吗? 它们是记录级过滤的好机制,您可以在每个实体上定义多个过滤器(例如,针对您的案例定义两个过滤器),并根据当前用户启用或禁用它们。 应说明过滤器可以接受参数(例如您当前的用户id) 我们在一个大型项目中使用了Hibernate3的这一伟大特性,该项目有一个分层的组织单元,并且运行良好
顺便说一下,如果使用Oracle作为数据库,请考虑Oracle的虚拟专用数据库特性。 我们决定使用antlr使用我们自己的dslAmir,我知道Hibernate过滤器,但它不适合我们的需要。谢谢你的建议。