Sobes.tech
Back to questions
Junior — Middle
62

Каким образом можно принудительно отключить механизм ленивой загрузки в Hibernate?

Companies where asked
айтеко

Answer from AI

sobes.tech AI

В Hibernate механизм ленивой загрузки (lazy loading) по умолчанию загружает связанные сущности только при первом обращении к ним, что экономит ресурсы. Чтобы принудительно отключить ленивую загрузку и сделать загрузку жадной (eager loading), можно:

  • Использовать аннотацию @OneToMany(fetch = FetchType.EAGER) или аналогичную с FetchType.EAGER для нужного поля.
  • В HQL или Criteria запросах использовать join fetch для явного присоединения связанных сущностей.
  • Настроить глобально через конфигурацию, но это не рекомендуется, так как может привести к избыточной загрузке данных.

Пример:

@Entity
public class Author {
    @OneToMany(fetch = FetchType.EAGER)
    private Set<Book> books;
}

Или в запросе:

String hql = "FROM Author a JOIN FETCH a.books WHERE a.id = :id";