Grails/ GORM: разница между lazy: false и fetchMode
В Grails / GORM, в чем разница между static mapping = {xyz lazy: false}
& static fetchMode = [xyz: 'eager']
?
пример:
class Book {
static belongsTo = [author: Author]
static mapping = {author lazy: false}
static fetchMode = [author: 'eager']
}
1 ответов
разницу между lazy: false и fetchMode 'жаждущих' are
- lazy: false получит Связанный объект домена, снова запросив базу данных с помощью Select Query, но fetchMode 'eager', который теперь устарел(используйте fetch:'join'), попытается присоединиться к связанным таблицам(используя внешнее соединение) и получить связанные объекты в одном запросе.
- lazy: false будет иметь еще один запрос к базе данных для извлечения связанного домена объект и, следовательно, будет иметь больше взаимодействий с базой данных, тогда как fetch:'join' будет иметь меньше взаимодействия для получения тех же данных.
- Fetchmode Join переопределяет свойство lazy. Он будет просто игнорировать ленивых: false.
Если вас интересует подробное объяснение о Fetchmodes, посмотрите http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/. В статье описаны Hibernate fetchmodes и выходные данные которые они производят.
надеюсь, что это помогает.