Grails 1.1 持久化基础 - 使用批量加载Using Batch Fetching

虽然立即加载适合某些情况,它并不总是可取的,如果您所有操作都使用立即加载,那么您会将整个数据库加载到内存中,导致性能和内存的问题.

替代立即加载是使用批量加载.实际上,您可以在"batches"中配置Hibernate延迟加载. 例如:class Airport { String name static hasMany = [flights:Flight] static mapping = { flight batchSize:10 } }在这种情况下,由于 batchSize 参数,当您迭代 flights 关联, Hibernate 加载10个批次的结果.

例如,如果您一个 Airport 有30个s, 如果您没有配置批量加载,那么您在对Airport的查询中只能一次查询出一个结果,那么要执行30次查询以加载每个flight.

使用批量加载,您对Airport查询一次将查询出10个Flight,那么您只需查询3次. 换句话说, 批量加载是延迟加载策略的优化.

批量加载也可以配置在class级别:class Flight { … static mapping = { batchSize 10 } }