Какой постоянный провайдер EJB 3 мне следует использовать?

Я использую EJB 3 в довольно большом проекте J2EE, по умолчанию в Netbeans в качестве постоянного поставщика для компонентов управления данными устанавливается TopLink. Существует возможность изменить поставщика на один из следующих или даже добавить новую библиотеку сохраняемости:

  • Спящий режим
  • KODO
  • OpenJPA

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

Хотя TopLink кажется хорошим, я не могу найти много хорошей документации о том, как управлять кешированием и т. д. Любая помощь будет очень признательна.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
3 235
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Я настоятельно рекомендую Hibernate по следующим причинам:

  • Самый широко используемый и уважаемый уровень сохраняемости с открытым исходным кодом в мире Java; огромное активное сообщество и много использования в критически важных приложениях большого объема.
  • Вы вообще не привязываете себя к J2EE или конкретному поставщику, если хотите пойти другим путем с остальной частью вашего приложения, например Spring и т. д., Поскольку Hibernate по-прежнему будет хорошо работать.

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

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

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

Ответ принят как подходящий

Я бы рассмотрел возможность использования только двух провайдеров JPA:

Если вы хотите придерживаться стандартного JPA, я бы использовал EclipseLink. В то время как Toplink Essentials является эталонной реализацией JPA 1.0, EclipseLink в основном унаследовал код TopLink Essentials и будет эталонной реализацией JPA 2.0 (и будет поставляться вместе с Glassfish V3, когда он появится; ожидается, что JavaOne появится в мае 2009 года). TopLink Essentials был несколько урезанной версией коммерческого продукта Oracle TopLink, но EclipseLink в основном обладает всеми функциями TopLink.

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

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

Честно говоря, я бы не стал рассматривать ничего, кроме двух вышеупомянутых провайдеров.

почему бы вам не рассмотреть openJPA. У каждой реализации есть свои преимущества и недостатки ...

b3bop 18.01.2012 04:17

Недавно я работал над большим корпоративным приложением, созданным с помощью инфраструктуры Kodo JPA. SQL-запросы, производимые Kodo, обычно не очень хорошо масштабировались с большим объемом данных. На мой взгляд, это вызвало слишком много запросов с внешними соединениями. Учитывая, сколько сопоставлений нам пришлось изменить при попытке масштабировать кодо, я бы не рекомендовал использовать его для большого корпоративного приложения. Даже представители Oracle, с которыми мы говорили, пытаются отучить клиентов от кодо и перейти на TopLink. Oracle может постепенно отказаться от кодо в будущем.

DataNucleus http://www.datanucleus.org также является полностью совместимым поставщиком JPA с JPA1 и некоторыми функциями предварительного просмотра JPA2.

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