class Airport {
String name
static hasMany = [flights:Flight]
}
class Flight {
String number
static belongsTo = [airport:Airport]
}Airport与Flights是一对多关系,Grails使用的是[b]延迟加载[/b]。
这样会产生[color=red]N+1[/color]个查询。
另外一个方法:
static fetchMode = [flights:"eager"]
使用[color=red]eager策略[/color]就可以一次性加载所有数据。
[color=blue]还有就是可以定义为non-lazy。[/color]
本文介绍了Grails中Airport与Flights的一对多关系配置及不同加载策略的影响。使用静态属性fetchMode来设置eager加载策略可以减少数据库查询次数,避免N+1查询问题。同时,也介绍了如何通过定义non-lazy来实现这一目标。
435

被折叠的 条评论
为什么被折叠?



