Op het moment dat spring wordt gebruikt, worden alle gegevens opgehaald en wordt de stream alleen toegepast op gegevens die al in het geheugen staan.
Als je kijkt naar de bron van org.springframework.data.jpa.provider.PersistenceProvider
het lijkt erop dat het een ScrollableResults
. gebruikt om over de gegevens te streamen.
Over het algemeen een ScrollableResults
haal alle gegevens in het geheugen op.
U kunt een interessante volledige analyse vinden met behulp van een MySql-database hier , maar waarschijnlijk werkt hetzelfde voor een Postgres-database.
Dus ook als u denkt een oplossing te gebruiken die niet veel geheugen hoeft te gebruiken, is dat in werkelijkheid het geval omdat de onderliggende implementatie geen optimale implementatie gebruikt.