У меня есть приложение, полностью совместимое с JPA2, которое должно быть переносимым на многие серверы приложений.Быть совместимым с JPA (...) означает, что мы можем переключать поставщиков JPA с помощью конфигурации (...)
Да.
(...) Однако при запускена сервере приложений Java EE следует ли нам по умолчанию использовать в нем поставщика JPA или использовать Hibernate?
Что ж, если вы развертываете на сервере Java EE 6, это не имеет значения.Непонятно, кто будет запускать приложение, и вы можете дать рекомендации, но среда выполнения на самом деле «не ваше дело» :) Также обратите внимание, что вы не сможете воспользоваться поддержкой, если вы не используете поставщика по умолчанию (если это имеет значение).
Я знаю, что в JBoss провайдер Hibernate, так что, вероятно, это не имеет значения.Тем не менее, я думаю, что провайдером в WebLogic является Eclipselink.Я понятия не имею, что использует поставщик WebSphere или Glassfish, но я видел подробные инструкции о том, как использовать Hibernate в качестве поставщика на этих серверах приложений.
Прежде всего, имейте в виду, что JPA 2.0является частью Java EE 6, и GlassFish v3 является единственным контейнером Java EE 6 в настоящее время.WebLogic и WebSphere являются серверами Java EE 5, они могут не поддерживать JPA 2.0.
Теперь, что касается поставщиков по умолчанию:
GlassFish v3 использует EclipseLink 2.0 в качестве поставщика по умолчанию, номожно настроить на использование Hibernate 3.5 (через надстройку).
В Weblogic 10.3.2 поставщиком JPA по умолчанию является OpenJPA / Kodo, а EclipseLink 1.2 доступен как модуль WLS,В WLS 10.3.3 (еще не выпущен) EclipseLink 2.0 будет доступен в качестве модуля WLS, по умолчанию все еще OpenJPA / Kodo. Но контейнер JPA API по-прежнему будет JPA 1.0 !Кажется возможным упаковать поставщика JPA 2.0 внутри вашего приложения.См. эту тему и эту страницу .Но это официально не поддерживается, и делать то же самое с Hibernate 3.5 может быть другая история .
В WebSphere 6 и 7 поставщиком по умолчанию является OpenJPA. Эта ссылка предоставит вам некоторые сведения о способе смены поставщика по умолчанию (и последствиях).Но я не могу сказать вам больше.
Я думаю, еще один способ задать вопрос - чего бы нам не хватало при использовании Hibernate на этих серверах приложений?
Как я уже говорил, это может не поддерживаться поставщиком.Кроме того, если вы хотите максимизировать мобильность и планируете развернуть свое приложение в ближайшем будущем, переход на JPA 2.0 может быть не мудрым выбором (или слишком оптимистичным, если вы предпочитаете).