2017-03-31 48 views
0

目前我正在使用Java 8最優化的方式在Java中8查詢結果數據庫

我現在是在一個地步,我要查詢從我的本地MySQL數據庫結果的春/ Hibernate項目。

我想出了這樣的方法有兩種:

  1. Jinq它利用Java的8流:

    customers.where(
        c -> c.getCountry().equals("Belgium") 
    ); 
    
  2. 的Hibernate查詢(HQL):

    Query query = session.createQuery("from Customers where Country = 'Belgium' "); 
    List list = query.list(); 
    

使用時間戳,我能夠te執行時間(Jinq比HQL花費的時間少)。

但性能方面,Jinq最適合這裏的場景嗎?有另一種查詢方式更優化嗎?最終,項目將每隔10分鐘查詢300,000到1,000,000個結果。

謝謝。

+3

對於我的經驗來說,最好的性能是原始查詢。 – scaisEdge

+1

如果ORM使用反射來將自定義類中的查詢結果包裝起來,它總是比原始查詢慢。所以,如果你不需要ORM,不要使用它,原始查詢更快。無論如何,請注意速度不應該是一個問題,ORM經常用於企業環境,它們不會影響性能,所以如果您需要一個ORM,只需選擇一個更適合您的需求的ORM。 – BackSlash

+3

如果您要運行查詢返回一百萬條記錄,則應該直接使用JDBC,以便在檢索行時對其進行處理,從而保持內存佔用空間不變。你不想使用返回被編組對象的'LIst'的API。 – Andreas

回答

1

現在,如果您只是對每個查詢執行全表掃描,那麼使用哪一個應該沒有關係。

與此同時,如果您對純粹的性能感興趣,那麼您應該只使用原始查詢。

就我個人而言,我有一個可能與您的規模相似的項目,而我的JINQ總是更短。所以,只要去你的JINQ解決方案應該足夠好。

有了更多的細節,我可以提供更多的幫助。