在GORM中,关联默认是lazy的.最好的解释是例子:class Airport {
String name
static hasMany = [flights:Flight]
}
class Flight {
String number
static belongsTo = [airport:Airport]
}
上面的domain类和下面的代码:def airport = Airport.findByName("Gatwick")
airport.flights.each {
println it.name
}
GORM GORM将会执行一个单独的SQL查询来抓取 Airport 实例,然后再用一个额外的foreach 查询逐条迭代 flights 关联.换句话说,你得到了N+1条查询.
根据这个集合的使用频率,有时候这可能是最佳方案.因为你可以指定只有在特定的情况下才访问这个关联的逻辑.