Насколько важна зрелость базы данных при использовании Hibernate? - PullRequest
1 голос
/ 06 мая 2011

Я хотел бы знать, насколько важна база данных при использовании Hibernate Framework. При сравнении, например, Oracle и MySql, существует огромная разница в автономных базах данных, но я не вижу большой разницы, когда база данных скрыта за Hibernate. В чем преимущества использования Hibernate в сочетании с более продвинутыми системами баз данных?

Спасибо за ответы.

Ответы [ 4 ]

3 голосов
/ 06 мая 2011

Hibernate является более или менее языком отображения, который позволяет вам вызывать методы Hibernate в вашем коде, а библиотека Hibernate преобразует эти вызовы методов в соответствующие вызовы JDBC (более или менее).

Итак, какПока Hibernate знает, как преобразовывать свои вызовы API в правильный и эффективный SQL для данной СУБД, это не должно иметь значения.«Зрелость» СУБД может быть проблемой, если она продолжает изменять функции и т. Д., Но только в том смысле, что соответствующий диалект Hibernate необходимо будет постоянно обновлять для работы с этой конкретной версией.

ВВ большинстве случаев, если вы просто используете аспекты, которые соответствуют стандарту SQL, вы не должны видеть проблемы с Hibernate, поскольку он должен уметь справляться с наименьшим общим знаменателем просто отлично.Тем не менее, если вы используете эту СУБД специально для ее «более продвинутых» функций, вы можете быть разочарованы тем, что Hibernate не использует их преимущества (в зависимости от того, являются ли классные функции полностью внутренними, например, очень производительный оптимизатор запросов).или являются внешними, такими как некоторые новые команды SQL).

3 голосов
/ 06 мая 2011

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

0 голосов
/ 06 мая 2011

Я могу с уверенностью сказать, что это может иметь большое значение. Я не уверен, увидите ли вы большую разницу на уровне приложений между MySQL и Oracle, но если вы перейдете «вниз» по списку СУБД и попадете в базы данных, такие как SQLite или H2, их внутренняя работа сделает много Различия в зависимости от типов объектов, которые вы храните, и шаблонов доступа, которые вы создаете, даже в спящем режиме, скрывая эксцентриситеты базы данных. Сведения о механизмах блокировки, возможностях параллелизма, о том, как они обрабатывают транзакции, построении / использовании / взаимодействии индексов и т. Д., Будут влиять на то, насколько хорошо будет работать ваше приложение - иногда значительно. Например, нам пришлось перенести гигабайты данных в работающей системе из H2 в MySQL из-за ограничений, которые мы обнаружили - даже при том, что мы используем hibernate везде.

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

0 голосов
/ 06 мая 2011

Помимо встроенных функций СУБД, разница заключается в возможностях конкретного "диалекта", который будет использоваться как последствие.

...