Не могу понять сессию в спящем режиме - PullRequest
2 голосов
/ 27 декабря 2011

Когда вызывается load, Hibernate проверяет, содержится ли объект в сеансе. Если это так, то объект возвращается, в противном случае создается прокси.

Сессия для взаимодействия с базой данных, как она содержит объект при передаче объекта в метод загрузки. Тогда как насчет прокси, где он используется.

1 Ответ

1 голос
/ 27 декабря 2011

Прокси - это просто оболочка вокруг реального объекта. Когда вы звоните session.load(Person.class, 3), Hibernate проверит, находится ли человек с идентификатором 3 в кэше сеанса. Если это не так, он создаст прокси, сохранит его в кэше сеанса и вернет его. Прокси - это класс, который работает так:

public class PersonProxy extends Person {
    private int id;
    private boolean initialized = false;

    public String getName() {
        if (!initialized) {
            // read state of the entity from database;
            initialized = true;
        }
        return this.name;
    }

    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...