Sobes.tech
Back to questions
Junior — Middle
98

Как отличить режимы загрузки данных FetchType Eager и Lazy и в чем их основные различия?

Answer from AI

sobes.tech AI

В JPA (Java Persistence API) режимы загрузки FetchType определяют, когда связанные сущности загружаются из базы данных:

  • EAGER (жадная загрузка) — связанные данные загружаются сразу вместе с основной сущностью. Это удобно, когда связанные данные точно нужны, но может привести к избыточным запросам и нагрузке.

  • LAZY (ленивая загрузка) — связанные данные загружаются только при первом обращении к ним в коде. Это экономит ресурсы, но может вызвать ошибку LazyInitializationException, если сессия уже закрыта.

Пример:

@Entity
public class Order {
    @OneToMany(fetch = FetchType.LAZY)
    private List<Item> items;
}

Здесь items загрузятся только при вызове order.getItems(), а не сразу при загрузке Order.