JPA / Hibernate: Какая польза от ORM (Hibernate), когда он не дает правильного отображения JPA? - PullRequest
1 голос
/ 02 декабря 2010

В последние пару месяцев / недель я много играл с Hibernate и JPA mapping.Моя БД использует составные первичные ключи, и я сообщил о примерно 10-15 ошибках Hibernate и 5-10 ошибках EclipseLink.Спящий режим особенно нелеп в некоторых созвездиях, которые должны работать.(Я проверял код экспертами и авторами книг JPA)

Большой вопрос:

Какой смысл использовать ORM, когда он не получает все JPA-сопоставленияверно?

Hibernate может предложить очень многое, кэширование и так далее.Интересно, кого это волнует, когда разработчики не могут даже пройти мимо создания рабочей модели метаданных ... Это все бессмысленно.Итак, еще раз, какой смысл использовать ORM, когда он не получает все JPA-отображений, верно?

Ответы [ 2 ]

5 голосов
/ 02 декабря 2010

ORM - это инструмент.Обдумайте это предложение глубоко.

Обычно считается, что если частичная технология, в данном случае Hibernate, становится достаточно популярной в определенной области, это серебряная пуля, и вам придется ее использовать, иначе вы проиграете.

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

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

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

Именно поэтому Hibernate настоятельно рекомендует использовать первичные суррогатные ключи, которые автоинкрементны..

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

3 голосов
/ 14 февраля 2011

С какой бы то ни было проблемой, связанной с JPA, я создаю тестовый сценарий для всех реализаций и сравниваю поведение ORM и реакции их сообществ. Hibernate - безусловно худший - их ошибки JPA даже не рассматриваются. OpenJPA несколько отстает от функциональности EclipseLink, но выглядит стабильно. EclipseLink содержит ошибки, которые все еще занимают некоторое время, но есть активность и частые обновления. На мои вопросы в списке рассылки все специалисты ответили профессионально. Похоже, что в настоящее время EclipseLink является победителем. Я использую составные первичные ключи без проблем - без них мне все еще нужны вторичные уникальные индексы. Действительно полезно иметь возможность искать объекты по составному ключу, поэтому обходной путь суррогатного ключа кажется мне оправданием. В EclipseLink можно даже использовать enum в качестве первичного ключа, который действительно полезен для тех многочисленных маленьких справочных таблиц, которые управляют поведением системы. Смотри http://opensource.atlassian.com/projects/hibernate/browse/JPA-7

...