batchSize

Purpose

Customizes how many results are fetching during lazy loading.

Examples

class Book {
	…
	static mapping = {
		batchSize 10
	}
}

Description

Usage: batchSize(integer)

Given a lazy association where an Author has many Books, GORM will perform one query to get a hold of the Author and then an additional query for each associated Book. This is what is known as the N+1 problem and can often be worked around by using a join query. However, joins can be expensive.

Batch fetching is an optimization of lazy loading so that if, for example, you set a batchSize of 10 and you have an Author that has written 30 books, instead of 31 queries you get 4 (1 to fetch the Author and then three batches of 10):

static mapping = {
	batchSize 10
}

You can also configure batchSize on a per association basis:

class Author {
	static hasMany = [books:Book]
	static mapping = {
		books batchSize: 10
	}	
}