Maven-Abhängigkeiten bezüglich javax.persistence JAR?

8

Ich verwende Spring 3 und Hibernate 4 JPA. Ich bin verwirrt in Bezug auf javax.persistence JAR. Ich habe unter zwei Maven-Abhängigkeiten bei Google gefunden. Bitte sagen Sie mir, welche in zwei Abhängigkeiten erforderlich ist?

%Vor%     
user755806 03.02.2014, 09:18
quelle

3 Antworten

11

Das erste dieser javax.persistence.persistence-api ist das API Jar, das herstellerübergreifende Schnittstellen definiert, mit denen Ihre Anwendung arbeiten soll.

Die zweite ist die EclipseLink-Implementierung dieser API.

Es ist möglich, Referenzen auf die erste javax.persistence Abhängigkeit zu entfernen und einfach das EclipseLink jar zu verwenden. Es gibt jedoch einen guten Grund, dies nicht zu tun.

Durch Schreiben und Kompilieren Ihres Codes gegen die herstellerneutrale javax.persistence API wird sichergestellt, dass Ihr Anwendungscode für verschiedene Persistenzanbieter portierbar ist. Wenn Sie zum Beispiel in den Ruhezustand wechseln möchten, können Sie dies in Ihre pom.xml einfügen und die org.eclipse -Abhängigkeit entfernen, ohne Ihren Anwendungscode zu ändern.

Allerdings gibt es ein extra kleines Detail, das Sie ändern sollten. Um sicherzustellen, dass Ihre Anwendung zwischen Persistenzanbietern wechseln kann, sollte die 'Implementierungsabhängigkeit' nur zur Laufzeit verwendet werden. Andernfalls könnte der herstellerspezifische Code problemlos in Ihre Codebasis gelangen. Fügen Sie Ihrer org.eclipse Abhängigkeit Folgendes hinzu und sehen Sie, ob Ihre Anwendung kompiliert wird.

%Vor%

Als Ergebnis davon können Sie feststellen, dass Ihre Anwendung EclipseLink-spezifischen Code enthält. Dies bedeutet, dass Sie den Persistenzanbieter nicht ändern konnten, ohne Ihre Codebasis zu ändern.

Ob das ein Problem ist, bleibt Ihnen überlassen. ;)

    
Steve 03.02.2014, 09:38
quelle
1
%Vor%

Welches ist das neueste und kompakt mit Hibernate 4. Auch die neueste Version von Hibernate-Unterstützung jpa 2.1.0 überprüfen Sie dies bitte link

    
quelle
0

Sie müssen diese Abhängigkeit nicht explizit einschließen, sie befindet sich in Hibernate pom und wird transitiv hinzugefügt

    
Evgeniy Dorofeev 03.02.2014 09:36
quelle

Tags und Links