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

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

  •  01-07-2019
  •  | 
  •  

Вопрос

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

  • Спящий режим
  • КОДО
  • OpenJPA

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

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

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

Решение

Есть только два поставщика 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 возникают проблемы с сущностью, имеющей несколько нетерпеливых связей «один ко многим».Я не знаю, есть ли в Hibernate эквивалент подсказки пакетного запроса EclipseLink, но это невероятно полезная функция для решения такого рода проблем.

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

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

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

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

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

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

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

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

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

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

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