Потоковая передача в репозитории JPA вызывает сбой - PullRequest
0 голосов
/ 31 марта 2020

Мне нужно l oop через некоторый больший набор данных, поэтому я возвращаю Stream из вызова хранилища следующим образом:

    @QueryHints(value = {
            @QueryHint(name = HINT_FETCH_SIZE, value = "500"),
            @QueryHint(name = HINT_CACHEABLE, value = "false"),
            @QueryHint(name = READ_ONLY, value = "true")
    })
    @Query("from StoreEntity")
    Stream<StoreEntity> getAll();

Я также использую @Transactional(readOnly = true) в сервисе учебный класс. Тем не менее, я получаю OutOfMemoryException при обработке только 30 000 объектов. Я не создаю никаких списков, даже если я делаю только операции только для чтения на StoreEntity, я получаю OOM. Все ли объекты в транзакции так или иначе кэшируются JPA / Hibernate? Это для меня единственная значимая причина, почему она не освобождает память. Как бы вы решили это, пожалуйста?

...