【发布时间】:2013-09-18 15:02:37
【问题描述】:
处理大量域对象的最佳方法是什么? 例如,我有 'Users' 和 'Book' 域,并且 Book 对象有 READ 权限。 当我添加一本新书时,我想为这本书的所有用户设置阅读权限。 起初是一个代码:
def users = Users.findAll{ ... }
users.each { addPermission(book, it, READ) }
我正在使用 Spring Security Core 和 ACL 插件。 但现在,我认为将 10000 个用户对象加载到内存并不是最好的方法。 我将使用 SCROLL 方法和 Criteria 中的 maxResults(???)。 所以我的问题是最好的方法是什么?如何确定 MaxResults 的最佳数量?
【问题讨论】:
-
我猜你有充分的理由这样做,但你不能通过在图书所属的位置添加“BookGroup”然后授予用户阅读“BookGroup”中所有图书的权利来解决它吗?使用 findAll 似乎有点矫枉过正,但我不详细了解您的情况。
-
我正在使用 Spring Security ACL 插件。 Acl_entry 表负责保留所有权限。如果我只有一个权限,你的建议很好 - 阅读。但如果我们有 WRITE、CREATE、DELETE ....
-
总有一些障碍需要克服,如果这很容易,每个人都会开发系统。如果您使用的是 Spring Security,您不能控制谁可以使用角色做什么?
-
Marco,我了解您尝试使用 OOP(添加新类)来解决它。但我必须以同样的方式调用 addPermission(book, it, READ) 。所以我的问题不是如何改变我的模型。我只需要处理一个大列表。
-
好的,知道了。我更了解你现在的来历。
标签: grails grails-orm