我使用Spring Boot 1.5.7和Spring Data JPA和Spring Batch。我使用JpaPagingItemReader<T>
來讀取實體,並使用JpaItemWriter<T>
來寫入它們。我想要做的是從某個數據庫表中讀取數據,將它們轉換爲不同的格式並將它們寫回不同的表格(我讀取原始json字符串,將它們反序列化並將它們插入到它們的特定表格中)。Spring批量查詢狀態變化
我不打算刪除處理它們後讀取的數據,而只是想將它們標記爲已處理。現在的問題是,將JpaPagingItemReader
手柄讀起來很好,如果我作出這樣的查詢到的東西:
@Bean
public ItemReader<RdJsonStore> reader(){
JpaPagingItemReader<RdJsonStore> reader = new JpaPagingItemReader<>();
reader.setEntityManagerFactory(entityManagerFactory);
reader.setQueryString("select e from RdJsonStore e "+
"where e.jsonStoreProcessedPointer is null");
reader.setPageSize(rawDataProperties.getBatchProcessingSize());
return reader;
}
所以,如果沒有指針,它會只讀。我會在處理一個條目之後插入一個指針(批量處理,如我處理1000條目並將其所有ID發佈到指針表)。
如果我更改爲像這樣運行時返回的數據(它嘗試查詢的條目每批減少),ItemWriter(和JPA one)是否可以處理讀取的數據?
如果指針解決方案不適用,我應該如何設計DB-to-DB批處理作業?
我的源表看起來像這樣:
不,它不能,基礎數據發生變化,並且對於每個頁面查詢重新執行,您將開始丟失數據。 –
@ M.Deinum這是我想到的:( – appl3r