2015-05-06 3 views
0

Использование NamedParameterJdbcTemplate, когда я выполняю запрос, он извлекает миллионы документов. Мне нужно обработать их все, но их не нужно загружать в память сразу. Как я могу обрабатывать результирующий набор партиями без приложения, которое должно указывать дополнительные предложения (например, без использования primary_key in())Использование Spring DAO NamedParameterJdbcTemplate для обработки большого набора данных

ответ

1

Я думаю, вы можете использовать любой шаблон (SimpleJdbc, NamedJdbc или JdbcTemplate) при условии, что вы извлекаете данные в куски, используя ResultSetExtractor и RowMapper, или используя любую другую технику разбиения на страницы. Вы можете обратиться к

Pagination Using Spring ResultSetExtractor

1

Я бы сказал, рассмотрит использовать нативный запрос, первый порядок ваших данных, а затем использовать какое-то постраничное ключевое слово в TOP, LIMIT, ROWNUM (в зависимости от вашей базы данных), чтобы вернуть фрагмент данных, основанные на страницах , принести информацию в приложение, увеличить сетевой трафик, и я считаю, что базы данных могут эффективно выполнять эти задачи.

Существует хорошая весна партия модуль, который позволит вам сделать это с помощью

<bean id="cmrProcessReader" class="org.springframework.batch.item.database.JpaPagingItemReader" scope="step"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
    <property name="queryString" value="SELECT cmr FROM CmrRequestEntity cmr where cmr.errorMessage is null and cmr.onThread = 0 and cmr.processed = 0 " /> 
    <property name="pageSize" value="10" /> 
</bean> 

Но я верю, что вы не используете JPA, поэтому следует использовать собственные запросы.

Смежные вопросы