2016-07-13 25 views
0

我使用JPA堅持記錄Oracle數據庫。每次運行應用程序時,它都會轉到特定的目錄並解析其中的每個文件並加載到表中。通常有數千個文件需要處理。我應該避免創建EntityManagerFactory的次數太多

一個新的EntityManagerFactory創建我每次處理一個文件,當插入記錄的時間。因此,EMF每次開放數千次。當我調試它時,我發現創建EMF是耗時超過90%的最耗時的步驟。平均來說,創建一個新的EMF需要大約2-3秒。也許我應該在應用程序開始之前打開一次EMF連接,然後再開始文件迭代? EMF全天開放是否是好習慣?

+1

EntityManagerFactory的是線程安全的,正如你已經發現,有很多設置的獲取,加載和驗證的持久性單元所需的一切。 EntityManagers重量輕但不是線程安全 - 這些對象應在需要時獲得,而EMF集中/靜態加載。 – Chris

+0

@Chris謝謝你解釋不同之處。請讓它成爲答案,我會關閉它。 – ddd

回答

1

從我的評論中拉出: EntityManagerFactory是線程安全的,正如您發現的,在獲取,加載和驗證持久性單元所需的所有內容方面有很多設置。 EntityManagers重量輕但不是線程安全 - 這些對象應在需要時獲得,而EMF集中/靜態加載。