ExpensiveObjectToCreate

ExpensiveObjectToCreate

我是Grails的新手,遇到过Eager和惰性抓取的名称。他们到底是什么?如果答案能解释何时应使用每种技术,那将是非常好的。

提前致谢。

最佳答案

假设您有一个包含Person表和address表的简单数据库架构。如果从数据库中加载人员,则有两个选项。

  • 急切地加载地址,以便人和地址都可以从数据库中返回(可能是一次往返)。无论是否需要,都将立即加载它。
  • 延迟加载地址,这意味着直到需要时才加载它。

  • 这只是一个例子,还有很多其他例子,以C#编写,但应该很明显:
    private ExpensiveObjectToCreate lazy;
    private ExpensiveObjectToCreate eager = new ExpensiveObjectToCreate();
    
    public ExpensiveObjectToCreate Lazy
    {
        get
        {
            if(lazy == null)
            {
                 lazy = new ExpensiveObjectToCreate();
            }
            return lazy;
        }
    }
    public ExpensiveObjectToCreate Eager
    {
        get
        {
            return eager;
        }
    }
    

    10-04 18:24