Я не специалист по слюнам и просто пытаюсь рассказать о Spring Batch.
Spring Batch - это Read -> Process -> Write framework, и то, что мы делаем с drools, аналогично тому, что мы делаем на Process шаге Spring Batch, т.е. мы преобразуем чтение элемент в ItemProcessor
.
Как Spring Batch помогает обрабатывать большое количество элементов, реализуя Chunk Oriented обработка, т.е. мы читаем N-количество элементов за один раз, преобразуем эти элементы один за другим в Processor и затем записываем основная масса элементов в модуле записи - таким образом мы в основном сокращаем количество вызовов БД.
Существуют дополнительные возможности повышения производительности за счет реализации параллелизма с помощью секционирования и т. Д., Если ваши данные могут быть разбиты по некоторым критериям.
Таким образом, мы читаем элементы массово, преобразуем один за другим, а затем записываем массово в целевую базу данных, и я не думаю, что hibernate является хорошим инструментом для массового обновления / вставки на этапе записи - я бы выбрал простой JDBC.
Ваши слюни появляются на этапе преобразования, и это будет ваш пользовательский код, и его производительность не будет иметь ничего общего с Spring Batch, то есть с тем, как вы инициализируете сеансы, правила предварительной компиляции и т. Д. Вам нужно будет подключить этот код таким образом, чтобы вы не инициализировали сеанс drools и т. Д. Каждый раз, но это должно быть одноразовым действием.