Al momento utilizzando Spring vengono recuperati tutti i dati e lo Stream viene applicato solo ai dati già in memoria.
Se guardi il sorgente di org.springframework.data.jpa.provider.PersistenceProvider
sembra che utilizzi un ScrollableResults
per eseguire lo streaming dei dati.
Generalmente un ScrollableResults
recuperare tutti i dati in memoria.
Puoi trovare un'interessante analisi completa utilizzando un database MySql qui , ma probabilmente funziona lo stesso per un database Postgres.
Quindi, anche se pensi di utilizzare una soluzione che non ha bisogno di utilizzare molta memoria, in realtà lo fa perché l'implementazione sottostante non utilizza un'implementazione ottimale.