nella documentazione primavera dati JPA si dice per quanto riguarda i flussi:Devo chiudere i risultati delle query terminate e trasmesse in streaming in un blocco try-with-resources?
Un Flusso avvolge potenzialmente sottostante memorizzare i dati risorse specifiche e deve quindi essere chiuso dopo l'uso. È possibile chiudere manualmente il flusso utilizzando il metodo close() o utilizzando un blocco try-with-resources di Java 7.
Se Elaboro un ruscello con forEach
, un conteggio o un'altra operazione terminale, dovrebbe essere già chiusa (e non può essere riutilizzato) e non avrebbe dovuto avvolgere il flusso in ulteriori try-resources-block (dato che i miei blocchi non lanciano alcuna eccezione), o sbaglio qui?
Grazie per il suggerimento al punto ovvio. Questo ha aiutato. Inoltre, come ho visto fino a tardi, c'è questa risposta qui: http://stackoverflow.com/questions/27381329/do-terminal-operations-on-streams-close-the-source –
Per chiarire: * Qualsiasi * volta a " risorsa ", è necessario utilizzare try-with-resources (o equivalente) per rilasciarlo quando viene eseguito, anche quando si utilizzano gli stream. Anche se il flusso 'forEach' viene chiuso alla fine, devi farlo, altrimenti otterrai una perdita di risorse se si verifica un'eccezione. Dato che 'forEach' non chiama' close() ', devi assolutamente farlo. – Andreas