一般来说,什么是渴望获取和懒惰的提取?

时间:2011-08-27 12:12:10

标签: grails groovy

我是Grails的新手,我遇到了Eager和懒惰的名字。它们实际上是什么?如果答案解释何时应该使用这些技术,那将是非常好的?

提前致谢。

1 个答案:

答案 0 :(得分:7)

假设您有一个带有Person表和地址表的简单数据库模式。如果从数据库加载某个人,则有2个选项。:

  • 热切地加载地址,以便从数据库中返回人员和地址,可能是一次往返。无论是否需要或使用它,都会立即加载。
  • 懒惰地加载地址,这意味着在需要之前不要加载它。

这只是一个例子,有很多其他的,拿这个例子,用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;
    }
}