JPA selbst ist nur eine Spezifikation, kein Produkt, es kann weder Persistenz noch irgendetwas anderes von sich aus leisten. JPA ist nur ein Satz von Schnittstellen und erfordert eine Implementierung (einen Persistenzanbieter). Es gibt Open-Source- und kommerzielle JPA-Implementierungen (Toplink Essentials, EclipseLink, Hibernate EntityManager, OpenJPA, Kodo usw.), und jeder Java EE 5 (oder Java EE 6) Anwendungsserver muss Unterstützung für seine Verwendung bieten (JBoss verwendet Hibernate EntityManager, GlassFish v2 verwendet standardmäßig Toplink Essentials, GlassFish v3 verwendet standardmäßig EclipseLink, WebLogic verwendet standardmäßig Kodo usw.) 1 .
Das Schöne an JPA ist, dass es außerhalb eines Containers verwendet werden kann, zum Beispiel in einer Java SE-Anwendung oder in einem Testkontext (das war eines der großen Probleme mit EJB 2.x). Aber in diesem Fall, vous müssen Sie eine Implementierung bereitstellen, da Sie nicht die vom Container bereitgestellte Implementierung erhalten. Wie wir gesehen haben, ist der Hibernate EntityManager - der auf Hibernate Core aufbaut - einer von ihnen und das könnte erklären, warum Sie ihn sehen.
<sup>1 </sup>Beachten Sie, dass die meisten (alle?) Container eine Möglichkeit bieten, die von ihnen bereitgestellte Standardimplementierung zu ersetzen. Es ist zum Beispiel möglich, Hibernate anstelle von Kodo mit Weblogic oder anstelle von EclipseLink mit GlassFish zu verwenden. Dies könnte ein weiterer Grund sein, warum Sie es in dem Mix sehen.
0 Stimmen
Welchen Anwendungsserver verwenden Sie?
0 Stimmen
@Chris Dail - Sie verwenden Websphere 6.1