Реализации JPA - какую из них лучше всего использовать?[закрыто]

StackOverflow https://stackoverflow.com/questions/576659

Вопрос

Я использовал следующие реализации JPA:

  1. Впадать в спящий режим,
  2. Верхняя Ссылка,
  3. Открытый jpa

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

Toplink был в порядке, но остается ощущение, что он немного поврежден, поскольку, похоже, Oracle хочет, чтобы вы использовали / покупали?их более продвинутая библиотека.Попытка загрузить его также была непростой задачей, потому что вам нужно установить его, запустив jar-файл.Я обнаружил, что в нем реализована только базовая спецификация JPA.Причина, по которой я его использовал, заключалась в том, что hibernate использует множество библиотек, которые обычно используются в других проектах с открытым исходным кодом, из-за чего часто возникают проблемы с загрузкой классов, особенно при использовании JBoss

OpenJPA - Это, безусловно, лучшая документация, и его легко загрузить и использовать, но, похоже, он очень глючный.Возможно, это просто мой код, но код, который я нашел для более продвинутого использования, такого как отношения OneToMany с CascadeType.all set, похоже, просто не сработал.По общему признанию, возможно, мой код был неправильным, и у меня не было времени протестировать чистый случай, но многие инциденты, подобные этому, заставляют меня бояться его использовать.Я действительно надеюсь, что все наладится.Его сообщения об ошибках часто бесполезны для решения проблемы.

Какими другими библиотеками пользовались люди, какие из них они предпочитают и почему?

Это было полезно?

Решение

У меня были те же выводы по поводу этих реализаций.

  1. OpenJPA был / казался глючным

  2. В Hibernate было множество библиотек, и, похоже, у него были проблемы с не ленивая загрузка всего.

  3. Toplink в конечном итоге стал моим выбором.Это было не так гибко, как был бы Hibernate, но это работает, и мне не нужно устанавливать общее достояние-ведение журнала.

Тот, который я бы попробовал следующим, - это JPOX, который недавно был переименован в ядро данных.

Другие советы

Лично я не чувствую, что OpenJPA еще достаточно зрелая.Существуют другие библиотеки с открытым исходным кодом, которые являются более зрелыми, и я бы предпочел использовать их.Это те, которые я бы рассмотрел по порядку:

  1. Впадать в спящий режим.Hibernate существует уже давно и действительно проложил путь для ORM на Java.Единственная проблема, с которой я сталкиваюсь в Hibernate, - это лицензирование.Он лицензирован LGPL, что может вызвать недовольство некоторых коммерческих компаний (по причинам, в которые я здесь не буду вдаваться).В любом случае, если LGPL является для вас проблемой, вероятно, лучше держаться подальше.

  2. Ссылка на затмение.Немного предыстории по eclipselink.Toplink Essentials была бесплатной версией Oracle их реализации JPA.EclipseLink был взят из Toplink, полномасштабной реализации JPA Oracle.EclipseLink будет поставщиком JPA 2.0 для Glassfish версии v3.0, так что, похоже, все уходит от Toplink Essentials к EclipseLink.Хотя версия EclipseLink всего 1.0.2, продукт существует уже долгое время под другими названиями.

Проект, над которым я работаю, сейчас находится на Toplink Essentials, но вскоре мы планируем перейти на Eclipselink.Hibernate был отключен из-за проблем с лицензированием, о которых я упоминал ранее.

OpenJPA известен как Kodo, который BEA купила довольно давно.Kodo был реализацией JDO, а теперь JPA.Кроме того, мы довольно интенсивно используем OpenJPA.Таким образом, я бы не сказал, что это не по-взрослому.Это нормально, однако я бы предложил использовать Hibernate, а именно JPA-оболочки вокруг Hibernate.

Причина?1) JPA очень, очень похож на Hibernate 2) На многих рабочих местах есть требование Hibernate.Лучше ориентироваться на мейнстримные продукты ... в основном

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top