代码之家  ›  专栏  ›  技术社区  ›  Langali

具有多对多关系的急切加载-Grails(GORM)

  •  2
  • Langali  · 技术社区  · 16 年前

    每本书可以有很多作者。每个作者都可以写很多书。

    class Book {
       static belongsTo = Author
       static hasMany = [authors:Author]
    }
    
    class Author {
       static hasMany = [books:Book]
    }
    

    def book = Book.get(id)
    def authors = book.authors
    

    authors.each {
       it.books
    }
    

    现在你可以看到,它会变得递归(导致堆栈溢出)。有人知道它是如何工作的吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Burt Beckwith    16 年前

    急切地加载映射集合会使用初始ResultSet在一个数据库查询中抓取顶级实例和子实例。缓慢加载集合只需要第二个数据库查询来填充集合,但它的好处是只在需要时加载集合。

        2
  •  1
  •   Amit Jain    16 年前

    http://burtbeckwith.com/blog/?p=169 你也可以浏览博客中给出的演示链接。

    推荐文章