2013-06-17 3 views
8

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

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

Спасибо.

+2

Мнение являются [вне темы] (http://stackoverflow.com/help/on-topic) для этого сайта. –

+1

В чем причина перехода от JDBC к Hibernate? С точки зрения производительности хорошо написанный JDBC (с кешированием) должен каждый раз бить Hibernate. С точки зрения ремонтопригодности, ответ будет ... это зависит от того, какие запросы/изменения базы данных вам нужны ... – beny23

+0

Если вы в основном заинтересованы в возможностях кэширования, то почему бы не пойти на ehcache, а не в спящий режим? В среднем авторы спячки заявляют, что накладные расходы составляют 10%. –

ответ

8

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

http://phpdao.com/hibernate_vs_jdbc/

Выбор спящего режима через JDBC и SQL запросов не из-за производительности, но из-за причин, главным образом объекта упорства и независимости базы данных с точки зрения не писать базы данных конкретных запросов. Вы можете прочитать руководство по PDF, чтобы получить лучший обзор.

http://www.mindfiresolutions.com/mindfire/Java_Hibernate_JDBC.pdf

0

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

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

Смежные вопросы