Grails / GORM:lazy: false 和 fetchMode eager 之间的区别
Grails / GORM: difference between lazy: false & fetchMode eager
在 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']
}
lazy:false和fetchMode'eager'的区别是
- lazy:false 将通过使用 Select 查询再次查询数据库来获取关联的域对象,但是现在不推荐使用 fetchMode 'eager'(使用 fetch:'join')将尝试连接关联表(使用外部连接)并在单个查询中获取关联对象。
- lazy:false 将对数据库进行一次查询以获取关联的域对象,因此将与数据库进行更多交互,而 fetch:'join' 将进行更少的交互以获取相同的域对象数据。
- FetchMode Join 覆盖惰性 属性。它会简单地忽略 lazy:false.
如果您对有关 Fetchmodes 的详细解释感兴趣,请查看 http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/。文章描述了 Hibernate 提取模式及其产生的输出。
希望对您有所帮助。
在 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']
}
lazy:false和fetchMode'eager'的区别是
- lazy:false 将通过使用 Select 查询再次查询数据库来获取关联的域对象,但是现在不推荐使用 fetchMode 'eager'(使用 fetch:'join')将尝试连接关联表(使用外部连接)并在单个查询中获取关联对象。
- lazy:false 将对数据库进行一次查询以获取关联的域对象,因此将与数据库进行更多交互,而 fetch:'join' 将进行更少的交互以获取相同的域对象数据。
- FetchMode Join 覆盖惰性 属性。它会简单地忽略 lazy:false.
如果您对有关 Fetchmodes 的详细解释感兴趣,请查看 http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/。文章描述了 Hibernate 提取模式及其产生的输出。
希望对您有所帮助。