2017-06-20 26 views
3

有些人重寫了CrudRepository的方法findAll來返回一個Stream(java 8),但是我看到他們最終將Stream轉換爲List以便通過其餘控制器發送它。他們爲什麼使用流?在這裏使用Stream有什麼好處?如果他們想過濾記錄,我認爲會更好地過濾DataBase。Stream和Spring數據的優點

回答

3

這已經在Spring Data JPA中支持,請看here;因此覆蓋那些返回Stream並沒有真正的優勢。如果你真的想要一個Stream和它的一些潛在優勢 - 使用Spring Data JPA提供的功能。

另一個不同的方面是,在JPA Spec 2.2這可能是一些查詢的默認返回類型。 JPA接口QueryTypedQuery將得到一個名爲getResultStream()的新方法。因此,Spring Data將使用特定供應商特有的技術,如HibernateEclipseLink來傳輸結果。

默認情況下getResultStream只是list.stream的實現,但Hibernate已經覆蓋了ScrollableResult。如果你需要處理一個非常大的結果集,這樣會更有效率。

1

爲什麼人們想要使用Stream s可能有各種原因。

  1. 如果你這樣做,你不能或不想在數據庫中做任何處理,Stream S可能會發生是更好的工作。

  2. 這是如此髖關節和「功能」。幾乎每個人似乎都在試驗什麼是正確的功能組合。所以這是完全可能的,甚至可能在使用Stream時沒有益處。但是,它也不會花費太多。

相關問題