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";