Зачем нужна ленивая загрузка

«Зачем нужна ленивая загрузка» — вопрос из категории Hibernate, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Ленивая загрузка (lazy loading) — это техника отложенной инициализации объектов или ресурсов до момента их реального использования. Основные преимущества:

  1. Оптимизация памяти — не загружаем данные, которые могут не понадобиться.
  2. Ускорение старта — приложение запускается быстрее, т.к. инициализируется только необходимое.
  3. Эффективность — особенно полезно для больших данных (например, изображения в вебе или тяжелые объекты в Java).

Пример с Supplier для ленивой инициализации:

public class LazyExample {
    private Supplier<HeavyObject> heavyObject = () -> createAndCacheHeavyObject();

    private HeavyObject createAndCacheHeavyObject() {
        HeavyObject instance = new HeavyObject(); // тяжелая инициализация
        heavyObject = () -> instance; // заменяем Supplier на кэшированный результат
        return instance;
    }

    public HeavyObject getHeavyObject() {
        return heavyObject.get();
    }
}