2012-01-03 3 views
0

Мне нужно разработать проект Java EE. Я смущен, прочитав разные руководства по JDBC и Hibernate.Как выбрать между Hibernate и JDBC?

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

Использование тестового приложения, в котором у меня есть 100 000 записей в одной таблице, я заметил, что при использовании JDBC я могу получить все записи за 3-4 секунды. Когда я использовал Hibernate, это заняло 12-14 секунд.

Почему производительность Hibernate намного хуже, и как я могу увеличить производительность Hibernate до уровня JDBC?

+0

IMO Все зависит от проекта/приложения. Если ваш следующий DDD (доменный дизайн), то hibernate подойдет вам больше, и вы сможете использовать его наилучшим образом, с другой стороны, если ваше приложение является своего рода пакетным приложением (или у вас есть готовый дизайн db), тогда чистый jdbc лучше, чем спящий режим или любой другой ORM – blob

ответ

0

Ну независимо от того, в каком проекте вы находитесь, Hibernate всегда сделает вашу жизнь проще. Это приближает операции базы данных к вашей модели домена. Вы запрашиваете базу данных, используя соглашение классов java, просто как вы будете получать доступ к полям в java, тем более, что вы можете указать поля в своем запросе (вместо того, чтобы вводить текст в SQL и каждый раз, когда вы вводите запрос, который нужно перекрестно проверять, какое поле отображается имя столбца). Кроме того, hibernate вернет вам объекты домена после попадания запроса базы данных, и это всегда полезно, если вы посмотрите на JDBC, где вы должны сами построить все это.

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

+0

, используя тестовое приложение, когда у меня есть один лак-реорд в таблице сиглей. я замечаю, что JDBC i fetceh все указывает на 3 секунды. И когда я использовал Hibernate, это занимает от 12 до 14 секунд. Тогда, как спящий режим является тесто ./ ??? –

+0

любая идея, как я увеличиваю перформанс спящего режима? –

1

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

Я использовал спящий режим с JPA аннотации в проекте Maven

  1. Вы можете создать всю вашу модель и определить отношения с помощью annotations.Then работает одна команда Maven создал всю реляционную базу данных, таблицы и отношения на основе мои модели. Хорошо, что экономит много времени.

  2. Hibernate преобразует набор результатов в ваши модели в фоновом режиме на основе ваших геттеров и сеттеров. Снова вы сэкономили много времени

  3. Hibernate обычно получает все реляционные объекты eagerly.So вы не должны беспокоить написания запросов для объединения. (Вы всегда можете определить, хотите ли вы готовы принести/ленивый принести)

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

Итак, если вы собираетесь написать проект Java EE, который будет расти с течением времени, и вы хотите сэкономить время на запись дополнительные классы, которые вы можете использовать для Hibernate. Все это из моего небольшого опыта. Но есть намного больше, что вы можете сделать в hibernate. Пожалуйста, обратитесь к hibernate docs

0

Это не "или" ситуация. В дополнение к Hibernate есть много интересных ORM solutions. Я был бы менее озабочен производительностью, если у вас нет особо интенсивного алгоритма. Вы должны рассмотреть возможность обучения и поддержки исходного кода.Моя библиотека ORM стремится к простой кривой обучения и минимальному программированию: sormula

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