Что за рвение и ленивое извлечение в родовом? - PullRequest
4 голосов
/ 27 августа 2011

Я новичок в Grails, и мне попалось имя Eager и ленивая загрузка.Что они на самом деле?Будет действительно хорошо, если ответ объяснит, когда следует использовать каждый из этих методов?

Заранее спасибо.

1 Ответ

7 голосов
/ 27 августа 2011

Допустим, у вас есть простая схема базы данных с таблицей 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...