Стремительная загрузка usig Batch Fetching
Можно ли заставить JPA, реализованный Hibernate, выполнять загрузку с помощью пакетной выборки?
Вы, наверное, задаетесь вопросом, почему я хочу сделать такую странную вещь, поэтому позвольте мне объяснить.
У нас есть две сущности A
а также B
, Существует отношение многие к 1 от A
в B
,
Я хочу загрузить A
объекты с поиском, и я хочу, чтобы они были полностью загружены, прежде чем они будут возвращены из хранилища.
Но так как есть много A
и очень немногие B
все (актуально) B
будет в кеше второго уровня. Поэтому я хочу избежать получения всех B
каждый раз из базы данных.
1 ответ
Как я понимаю вашу проблему, решение было бы использовать NamedQuery с FETCH
инструкция в NamedQuery:
SELECT DISTINCT B LEFT JOIN FETCH B.a A//will return fully loaded B instances
Если вы хотите указать размер партии, вы можете использовать @BatchSize
в спящем режиме (не JPA). Проверьте эту ссылку для примера.