2013-10-06 1 views
12

Ich beginne ein neues Web-Projekt und ich habe JPA als meine Ausdauer-ORM-Engine gewählt.Hibernate vs EclipseLink

Obwohl ich OpenJPA in meinem letzten Projekt verwendet habe, möchte ich jetzt EclipseLink verwenden.

Warum? Es ist die JPA Referenzimplementierung, es hat eine Menge Dokumentation und eine sehr gute Unterstützung in der Eclipse IDE. Außerdem kann ich keinen Benchmark finden, der erklärt, dass keiner von ihnen der beste ist, daher spielt die Performance keine Rolle (alle Implementierungen haben ihre eigenen Stärken).

Aber ich möchte die JSR-303-Validierungsspezifikation verwenden, und ich habe den Hibernate-Validator gewählt (dies ist die Referenzimplementierung der Bean-Validierungsspezifikation).

Außerdem verwende ich Spring, und es gibt viele Beispiele mit Spring + Hibernate, aber ich habe keine Meinung gefunden, die besagt, dass Spring mit Hibernate besser ist.

Gibt es ein Problem beim Mischen dieser beiden Implementierungen? Wäre es besser, Hibernate JPA mit Hibernate Bean-Validierung zu verwenden?

+2

Ich habe es nie in Kombination mit Spring versucht - aber Hibernate Bean Validierung und EclipseLink werden in Glassfish verwendet .... so ist die Benutzerfreundlichkeit bewiesen. Ich bevorzuge auch * EclipseLink zu Hibernate, weil es automatisch eine erweiterte offene Sitzung zum Lazy Loading unterstützt. – cljk

+0

Alle JPA 2 -Implementierungen (falls kompatibel) ermöglichen die Verwendung von ANY-Bean-Validierungsimplementierungen. Und wenn etwas eine "Referenzimplementierung" ist, bedeutet dies, dass damit bewiesen wurde, dass die JPA-Spezifikation umsetzbar ist ... * nichts mehr *. – DataNucleus

+0

Mögliches Duplikat von [Hibernate oder EclipseLink für JPA?] (Http://stackoverflow.com/questions/3234829/hibernate-or-ecipselinkin-for-jpa) – Dinei

Antwort

9

Ich habe EclipseLink Implementierung von JPA mit Spring und Hibernate-validation-4.2.0.Final verwendet. Und bisher kein Problem. Nun, um Ihre Frage zu beantworten:

Gibt es ein Problem beim Mischen dieser beiden Implementierungen?

Das glaube ich nicht, dass es mit Hibernate Implementierung für JSR-303 Validierung spec zusammen, da der Zweck dieser beiden Spezifikationen unterscheiden sich irgendein Problem mit EclipseLink JPA-Implementierung sein:

  • JSR 303 - Bean Validation - Definiert ein Metadatenmodell und eine API für die Entitätsvalidierung. Dies ist nicht an eine bestimmte Anwendungsebene oder ein Programmiermodell gebunden.
  • JPA - Dies ist die Spezifikation der Java-API für die Verwaltung von Persistenz und objekt/relationale Zuordnung mit Java EE und Java SE.

Spring bietet vollständige Unterstützung für die JSR-303 Bean Validierungs-API. Sie müssen nur einen JSR-303-Provider wie den Hibernate-Validator im Klassenpfad haben, der automatisch erkannt wird.

und die Feder JPA, die unter dem org.springframework.orm.jpa Paket bietet umfassende Unterstützung für die Java Persistence API in ähnlicher Weise wie die Integration mit Hibernate.