Sobes.tech
Назад к вопросам
Junior — Middle
72

Каким образом происходит подгрузка связанных объектов при использовании FetchType.EAGER в JPA?

Компании, где спрашивали
СБЕРСБЕР

Ответ от нейросети

sobes.tech AI

При использовании FetchType.EAGER в JPA связанные объекты загружаются сразу вместе с основным объектом в момент выполнения запроса к базе данных.

Это означает, что при выборке сущности JPA автоматически выполняет дополнительные SQL-запросы или объединения (JOIN), чтобы получить связанные сущности, и помещает их в соответствующие поля объекта.

Например, если у вас есть сущность Order с отношением @OneToMany к сущности OrderItem с FetchType.EAGER, то при загрузке Order будут сразу загружены все связанные OrderItem.

Пример:

@Entity
public class Order {
    @Id
    private Long id;

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "order")
    private Set<OrderItem> items;

    // геттеры и сеттеры
}

При выполнении запроса типа entityManager.find(Order.class, id) JPA выполнит SQL с JOIN или несколько запросов, чтобы сразу получить Order и все связанные OrderItem.

Преимущество EAGER — удобство, так как связанные данные сразу доступны. Недостаток — возможное снижение производительности из-за загрузки большого объема данных, если они не всегда нужны.