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




Я настоятельно рекомендую 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, скорее всего, найдет вам ответ.
Честно говоря, я бы не стал рассматривать ничего, кроме двух вышеупомянутых провайдеров.
Недавно я работал над большим корпоративным приложением, созданным с помощью инфраструктуры Kodo JPA. SQL-запросы, производимые Kodo, обычно не очень хорошо масштабировались с большим объемом данных. На мой взгляд, это вызвало слишком много запросов с внешними соединениями. Учитывая, сколько сопоставлений нам пришлось изменить при попытке масштабировать кодо, я бы не рекомендовал использовать его для большого корпоративного приложения. Даже представители Oracle, с которыми мы говорили, пытаются отучить клиентов от кодо и перейти на TopLink. Oracle может постепенно отказаться от кодо в будущем.
DataNucleus http://www.datanucleus.org также является полностью совместимым поставщиком JPA с JPA1 и некоторыми функциями предварительного просмотра JPA2.
почему бы вам не рассмотреть openJPA. У каждой реализации есть свои преимущества и недостатки ...