Grails/GORM : difference between lazy: false & fetchMode eager

标签 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']
}

最佳答案

lazy:false fetchMode'eager'之间的区别是

  • lazy:false将通过使用Select Query再次查询数据库来获取关联的域对象,但是现在不推荐使用的fetchMode'eager'(使用fetch:'join')将尝试连接关联的表(使用外部联接)并进行提取单个查询中的关联对象。
  • lazy:false将对数据库进行更多查询以获取关联的域对象,因此将与数据库进行更多交互,而fetch:'join'将具有较少的交互来获取相同的数据。
  • FetchMode Join会覆盖lazy属性。它将简单地忽略lazy:false。

  • 如果您对有关Fetchmodes的详细说明感兴趣,请查看http://www.solidsyntax.be/2013/10/17/fetching-collections-hibernate/。本文介绍了Hibernate的fetchmodes及其产生的输出。

    希望这可以帮助。

    关于Grails/GORM : difference between lazy: false & fetchMode eager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29819731/

    相关文章:

    oracle - 使用具有参数的GORM在一对一Grails域上加入查询

    java - JPA/EclipseLink 惰性集合未加载

    android - android中的图片懒加载

    grails - GORM组合保存错误,找不到与以下对象匹配的构造函数:java.lang.String(java.lang.Long)

    c# - NHibernate Linq Provider 渴望获取惰性字符串属性

    mongodb - 尝试使用GORM访问MongoDB数据时出现错误

    jquery - Grails-合并来自多个域的数据并返回 Controller

    grails - 无法上传照片Grails

    unit-testing - 为什么在单元测试中,域类的逻辑之前和之后会收到 “No such property”?

    grails - GORM:数据源的加密密码