java - هل يجب أن أغلق نتائج الاستعلام التي تم إنهاؤها، في محاولة لمصادر مع كتلة؟



java-8 spring-data-jpa (1)

هذا السؤال له إجابة هنا:

في مستندات جبا داتا داتا تقول في ما يتعلق بالتيارات:

تيار يحتمل أن يلف تخزين البيانات الأساسية الموارد المحددة، وبالتالي يجب أن تكون مغلقة بعد الاستخدام. يمكنك إما إغلاق ستريم يدويا باستخدام طريقة الإغلاق () أو باستخدام كتلة 7 مع محاولة الموارد جافا.

راجع: http://docs.spring.io/spring-data/jpa/docs/1.10.1.RELEASE/reference/html/#repositories.query-streaming

إذا كنت معالجة تيار مع forEach ، عملية العد أو محطة أخرى، يجب أن تكون مغلقة بالفعل (وعدم إعادة استخدامها مرة أخرى) وأنا لن تضطر إلى التفاف تيار في محاولة إضافية الموارد كتلة (نظرا إلى كتل بلدي دون 'ر رمي أي استثناء)، أو أنا خطأ هنا؟


تصف واجهات برمجة التطبيقات جافا هذا الموضوع كما يلي:

تيارات لها طريقة BaseStream.close() وتنفيذ AutoCloseable ، ولكن تقريبا كل مثيلات تيار لا تحتاج في الواقع إلى أن تكون مغلقة بعد الاستخدام. بشكل عام، Files.lines(Path, Charset)) فقط عمليات البث التي مصدرها قناة إو (مثل تلك التي يتم إرجاعها من قبل Files.lines(Path, Charset)) إلى الإغلاق. وتدعم معظم الجداول مجموعات أو صفائف أو وظائف توليد، والتي لا تتطلب إدارة خاصة للموارد. (إذا كان البث يتطلب الإغلاق، فيمكن أن يتم الإعلان عنه كمورد في بيان محاولة باستخدام الموارد.)

لاحظ أيضا أبي فور Files.lines(Path, Charset)) :

ويعرض الدفق الذي تم إرجاعه Reader. إذا كان مطلوبا التخلص من موارد نظام الملفات في الوقت المناسب، ينبغي استخدام بناء محاولة مع الموارد لضمان أن يتم استدعاء طريقة close تيار بعد الانتهاء من عمليات تيار.

السطر السفلي هو: إذا كان تيار يتوافق مع مورد أنه في السيناريوهات العادية تحتاج إلى أن تكون مغلقة بعد الاستخدام (مثل إو)، استخدامه في بيان محاولة مع الموارد.





java-stream