Grails 文档似乎已更新:
http://grails.org/doc/1.0.x/
在 5.2.4 节中,他们讨论了集合类型的潜在性能问题。
这是相关部分:
关于集合类型和性能的说明
Java Set 类型是一个不允许重复的集合。为了在将条目添加到 Set 关联时确保唯一性,Hibernate 必须从数据库中加载整个关联。如果关联中有大量条目,这在性能方面可能会很昂贵。
List 类型需要相同的行为,因为 Hibernate 需要加载整个关联以保持顺序。因此,如果您预计关联中有大量记录,则建议您进行双向关联,以便可以在反面创建链接。例如考虑以下代码:
def book = new Book(title:"New Grails Book")
def author = Author.get(1)
book.author = author
book.save()
在此示例中,关联链接是由子 (Book) 创建的,因此无需直接操作集合,从而减少查询并提高代码效率。如果您要编写如下代码,给定具有大量关联 Book 实例的 Author,您会看到对性能的影响:
def book = new Book(title:"New Grails Book")
def author = Author.get(1)
author.addToBooks(book)
author.save()