Sobes.tech
Junior — Middle
160

Wat is het verschil tussen de methoden get() en load() in Hibernate bij het ophalen van gegevens uit de database?

Bedrijven waar gevraagd werd
Передовые Платежные Решения

Antwoord van AI

sobes.tech AI

В Hibernate методы get() и load() используются для извлечения объектов из базы данных, но имеют разные особенности:

  • get(Class<T> clazz, Serializable id):

    • Немедленно выполняет запрос к базе данных.
    • Возвращает объект или null, если объект с таким ID не найден.
    • Используется, когда нужно сразу получить данные.
  • load(Class<T> clazz, Serializable id):

    • Возвращает прокси-объект без немедленного запроса к базе.
    • Запрос к базе выполняется только при первом обращении к свойствам объекта (ленивая загрузка).
    • Если объекта с таким ID нет, при обращении к прокси будет выброшено исключение ObjectNotFoundException.

Пример:

// get сразу обращается к базе
User user = session.get(User.class, 1);
if (user == null) {
    System.out.println("Пользователь не найден");
}

// load возвращает прокси
User userProxy = session.load(User.class, 1);
// запрос к базе выполнится при первом обращении к userProxy.getName()

Выбор зависит от ситуации: если нужно проверить наличие объекта, лучше использовать get(). Если известен ID и объект гарантированно существует, можно использовать load() для оптимизации.