Разница в производительности Native SQL (с использованием MySQL) по сравнению с использованием Hibernate ORM? - PullRequest
4 голосов
/ 17 сентября 2010

Я использую Spring MVC для приложения, которое включает многоуровневую серверную часть для управления и клиентскую / пользовательскую интерфейсную часть.Изначально проект был запущен без фреймворка и простых собственных вызовов JDBC для доступа к базе данных.

Поскольку проект значительно вырос (как и всегда), я сделал более значимые вызовы базы данных, иногда запрашивая большие размеры выбора.1003 *

Я делаю все возможное, чтобы обрабатывать мои вызовы БД для тесной эмуляции лучших практик объектно-реляционного сопоставления, но все еще просто использую JDBC.Я размышлял о том, должен ли я перейти в спящий режим, но не был уверен, стоит ли это того.Я был бы готов сделать это, если бы это стоило увеличения производительности.

Есть ли какой-либо выигрыш в производительности от использования Hibernate (или даже просто реляционного сопоставления объектов) по сравнению с нативным SQL с использованием JDBC?

Ответы [ 3 ]

6 голосов
/ 17 сентября 2010

Есть ли какой-либо выигрыш в производительности от использования Hibernate (или даже просто реляционного сопоставления объектов) по сравнению с нативным SQL с использованием JDBC?

Использование ORM, средства отображения данных и т. Д. Не приведетте же самые SQL-запросы выполняются быстрее.Однако при использовании Hibernate вы можете извлечь выгоду из таких вещей, как отложенная загрузка , кэширование второго уровня , кэширование запросов , и эти функции могут помочь повысить производительность.Я не говорю, что Hibernate идеально подходит для каждого случая использования (для особых случаев Hibernate не справляется хорошо, вы всегда можете вернуться к собственному SQL), но он делает очень достойную работу и определенно улучшает время разработки (даже после добавления временипотраченные на оптимизацию).

Но лучший способ убедить себя - это измерить вещи, и в вашем случае я бы, вероятно, создал бы прототип Hibernate, охватывающий некоторые репрезентативные сценарии, и протестировал его.

4 голосов
/ 17 сентября 2010

ORM позволяет вам оставаться в мире ООП, но это происходит за счет производительности, особенно в случае со многими отношениями в нашем случае. Мы использовали Hibernate по умолчанию, выполняя оптимизацию производительности с использованием jdbc, где это необходимо.

1 голос
/ 17 сентября 2010

Hibernate упростит разработку и обслуживание вашего приложения, но не обязательно ускорит доступ к БД.

Если ваши собственные вызовы JDBC используют неэффективный SQL, вы можете увидеть некоторое улучшение производительности, поскольку HIbernate генерирует хороший SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...