Java中的 Set 是一个不能有重复条目的集合类型. 为了确保添加到 Set 关联中的条目是唯一的,Hibernate 首先加载数据库中的全部关联.
如果你在关联中有大量的条目,那么这对性能来说是一个巨大的浪费.
这样做就需要 List 类型, 因为Hibernate需要加载全部关联以维持供应.
因此如果你希望大量的记录关联,那么你可以制作一个双向关联以便连接能在反面被建立。
例如思考一下代码:def book = new Book(title:"New Grails Book")
def author = Author.get(1)
book.author = author
book.save()
在这个例子中关联链接被child (Book)创建,因此没有必要手动操作集合以使查询更少和高效代码。
由于Author有大量的关联的Book 实例,如果你写入像下面的代码,你可以看到性能的影响:def book = new Book(title:"New Grails Book")
def author = Author.get(1)
author.addToBooks(book)
author.save()