Некоторые вещи стоит проверить:
- Возможно, накладные расходы на транзакцию, управляемую Spring на уровне приложения. Посмотрите, какой менеджер транзакций вы используете (ищите бин с именем
transactionManager
). Если вы используете JTA, это, вероятно, где ваша проблема. Поскольку JDBC работает быстро, узким местом, похоже, не является дБ.
- В зависимости от того, как ваше приложение использует эту транзакцию, оно может держать все в памяти, прежде чем завершит все 1500 запросов и фиксаций. Видите ли вы большую разницу в использовании памяти (у Spring должно быть намного больше)?
- Какой пул соединений с БД вы используете в любом из случаев?
Быстрый способ профилировать ваше приложение:
Получите pid - "jps -l"
Память: jmap -histo PID
(проверьте, есть ли какая-либо утечка памяти)
Проверьте, что происходит под капотом: jstack PID
(ищите медленные или рекурсивные вызовы методов)