Низкая производительность при использовании Hibernate Criteria API - PullRequest
3 голосов
/ 07 декабря 2011

У меня есть приложение Java, использующее Hibernate для связи с сервером MsSQL 2005, драйвер net.sourceforge.jtds 1.2.4.

Все работает, но производительность ужасна , я подозреваю, что индекс не используется для запросов, переданных ему, так как время отклика пропорционально количеству записей в таблице.


Я написал небольшое тестовое приложение, которое использует тот же драйвер (jtds), но не использует Hibernate, и мне удалось воспроизвести низкую производительность (или, как я полагаю). Когда я использую подготовленные операторы, я вижу ту же низкую производительность, что и в Hibernate (время отклика ~ 1 с), но когда я этого не делаю, производительность велика (~ 10 мс).

Я могу добиться такой же хорошей производительности, используя метод Hibernate executeSql вместо интерфейса Criteria, но я хочу этого избежать, поскольку хочу, чтобы код оставался модульным, а результаты не преобразовывались в мою сущность класс.

Есть ли какой-нибудь способ добиться хорошей производительности с Hibernate, при этом все еще используя независимый от бэкенда способ выполнения запросов и преобразования результатов в объекты класса сущностей?

1 Ответ

2 голосов
/ 07 декабря 2011

Вы пробовали проприетарный драйвер от Microsoft? Вы можете скачать его здесь . А обзор поддерживаемых конфигураций показан здесь . Это может дать вам лучшую производительность.

Соответствующий пост по SO также может быть вам полезен: как настроить файл конфигурации hibernate для сервера sql

...