Стремительная загрузка 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). Проверьте эту ссылку для примера.

Другие вопросы по тегам