在spring批處理程序中,我正在讀取文件中的記錄並與數據庫進行比較,如果數據表示文件中的column1已存在於table1中。在spring批處理中從數據庫獲取數據並將其存儲到內存中
表1相當小而且是靜態的。有沒有辦法從table1中獲取所有數據並將其存儲在內存中的批處理代碼中?現在,對於文件中的每條記錄,選擇查詢將觸及數據庫。
該文件有3列用「|」分隔。
我正在閱讀的文件平均擁有1200萬條記錄,並且大約需要5個小時才能完成這項工作。
在spring批處理程序中,我正在讀取文件中的記錄並與數據庫進行比較,如果數據表示文件中的column1已存在於table1中。在spring批處理中從數據庫獲取數據並將其存儲到內存中
表1相當小而且是靜態的。有沒有辦法從table1中獲取所有數據並將其存儲在內存中的批處理代碼中?現在,對於文件中的每條記錄,選擇查詢將觸及數據庫。
該文件有3列用「|」分隔。
我正在閱讀的文件平均擁有1200萬條記錄,並且大約需要5個小時才能完成這項工作。
使用StepExecutionListener.beforeStep
(或@BeforeStep
)在內存中預加載。
使用此特技數據將在執行步驟之前加載一次。
這也適用於重新啓動步驟。
我會使用像標準的Web應用程序緩存。使用Spring的緩存抽象添加服務緩存,並應該照顧它恕我直言。
在JobExecutionListener.beforeJob( - )中加載靜態表並將其保存在jobContext中,並且可以使用「作業和步驟屬性的延遲綁定」通過多個步驟進行訪問。 您可以參考本鏈接的5.4節http://docs.spring.io/spring-batch/reference/html/configureStep.html