Я видел этот шаблон, называемый асинхронной записью в базу данных или шаблоном обратной записи. Это типичный шаблон, поддерживаемый продуктами распределенного кэша (Teracotta, Coherence, GigaSpaces, ...), потому что вы не хотите, чтобы обновления вашего кэша также включали запись изменений в базовую базу данных.
Сложность этого шаблона зависит от вашей терпимости к потерянным обновлениям базы данных. Из-за задержки между завершением работы и записью результата в базу данных вы можете потерять обновления из-за ошибок, сбоев питания, ... (вы получаете картину).
Я бы предложил какую-то очередь для завершенных результатов, которые будут записаны в БД, а затем обработал бы их партиями по 100 (на вашем примере) ИЛИ через некоторое время. Причина также использования временной задержки заключается в том, чтобы справиться с наборами результатов, которые не делятся на 100.
Если у вас нет требований к устойчивости / долговечности, вы можете сделать все это в одном процессе. Однако, если вы не можете допустить потери, вы можете заменить очередь in-vm на постоянную очередь JMS (медленнее, но безопаснее).