Grails / GORM:lazy:false& fetchMode渴望

时间:2015-04-23 09:48:07

标签: grails gorm lazy-loading fetch eager-loading

在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 个答案:

答案 0 :(得分:5)

lazy:false fetchMode'渴望'之间的差异

  1. lazy:false将通过使用Select Query再次查询数据库来获取关联的域对象,但现在不推荐使用的fetchMode'eager'(使用fetch:'join')将尝试连接关联的表(使用外连接)并在单个查询中获取关联的对象。
  2. lazy:false将再向数据库提出一个查询以获取关联的域对象,因此将与数据库进行更多交互,而fetch:'join'将获得更少的交互以获取相同的数据。
  3. FetchMode Join会覆盖lazy属性。它会简单地忽略lazy:false。
  4. 如果您对Fetchmodes的详细说明感兴趣,请查看http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/。本文描述了Hibernate fetchmodes及其产生的输出。

    希望这有帮助。