Как вы все знаете, Hibernate вводит накладные расходы практически для всех операций с базой данных из-за управления внутренним кешем и состоянием объекта.
В настоящее время в нашем приложении есть то, что мы читаем данные с использованием простого SQL (JDBC) и использовать Hibernate для сохранения и обновления.Причина в том, что нам нужно загружать много информации при каждом запуске вычислений, но обновлять только ограниченную часть.
Теперь мы знаем, что этот подход не самый чистый, и мы провели несколько тестов, в которых мы пыталисьТонкая настройка чтения Hibernate, но мы достигли следующего:
Время чтения JDBC (session.doWork): 23 с
Время чтения Hibernate (session.createQuery с отложенной выборкой): 94 с
Нам кажется, что существующая служебная нагрузка связана с дополнительной обработкой Hibernate, и мы задались вопросом, может ли какое-либо помочь распараллеливание самого чтения (мы читаем много таблиц, которые мы могли бы выполнять параллельно)?Предназначены ли сеанс и транзакция Hibernate для безопасного использования из нескольких потоков?
Кроме того, если у вас есть какая-либо другая идея, что может помочь ускорить этот процесс, мы будем благодарны.