У меня есть приложение Java, использующее Hibernate для связи с сервером MsSQL 2005, драйвер net.sourceforge.jtds 1.2.4.
Все работает, но производительность ужасна , я подозреваю, что индекс не используется для запросов, переданных ему, так как время отклика пропорционально количеству записей в таблице.
Я написал небольшое тестовое приложение, которое использует тот же драйвер (jtds), но не использует Hibernate, и мне удалось воспроизвести низкую производительность (или, как я полагаю). Когда я использую подготовленные операторы, я вижу ту же низкую производительность, что и в Hibernate (время отклика ~ 1 с), но когда я этого не делаю, производительность велика (~ 10 мс).
Я могу добиться такой же хорошей производительности, используя метод Hibernate executeSql
вместо интерфейса Criteria
, но я хочу этого избежать, поскольку хочу, чтобы код оставался модульным, а результаты не преобразовывались в мою сущность класс.
Есть ли какой-нибудь способ добиться хорошей производительности с Hibernate, при этом все еще используя независимый от бэкенда способ выполнения запросов и преобразования результатов в объекты класса сущностей?