Was sind die Unterschiede zwischen Hibernate und JPA?

8

Als ich am College war und über Web-Programmierung lernte, erzählten sie uns von Winterschlaf.

Wir haben es eine Zeit lang genutzt, ich hatte sogar die Chance, fast 8 Monate in einem realen Szenario in einem Unternehmen zu arbeiten. Jetzt, wo ich komplett auf Java EE 6 ( Ich bin verliebt: ) umschalte, verwende ich JPA für meine ORM-Bedürfnisse.

Es ist ein paar Monate her, seit ich es benutze, aber ich verstehe nicht wirklich, was die Unterschiede zwischen den beiden sind. Warum manche Leute sagen, der eine oder der andere sei besser oder schlechter? Die Art, wie ich meine Abbildungen und Anmerkungen in beiden mache, ist fast die gleiche ...

Vielleicht können Sie einige meiner Zweifel lösen:

-Was sind die Vorteile und Nachteile von jedem?

- Hibernate verwendet JPA oder umgekehrt (hängen sie voneinander ab)?

- Welche Features hat der Benutzer aus Sicht der Features, die nicht die anderen haben?

- Noch andere Unterschiede zwischen beiden?

    
sfrj 15.04.2011, 15:18
quelle

6 Antworten

6

JPA (Java Persistence API) ist eine API, JPA 2.0 gehört zur JSR 317-Gruppe. Im Grunde handelt es sich um ein Framework zur Verwaltung von relationalen Daten mithilfe von ORM (Object Relational Mapping) für die Datenpersistenz.

Hibernate ist eine ORM-Bibliothek, die Ihre POJO / JavaBeans Ihrer Datenpersistenz zuordnet. Sowohl ORM als auch JPA haben ein Objekt / relationale Metadaten (XML, Annotations) für die Zuordnung von POJOs zu DB-Tabellen.

  

Verwendet Hibernate JPA oder das andere?   herum (hängen sie von jedem ab   andere)?

Hibernate 3 unterstützt jetzt JPA 2.0. JPA ist eine Spezifikation, die die Beziehung und Verwaltung relationaler Daten unter Verwendung des Objektmodells beschreibt. Da JPA eine API ist, implementiert Hibernate diese API. Alles, was Sie tun müssen, ist, Ihr Programm mit JPA-API-Klassen / -Schnittstellen zu schreiben, Hibernate als JPA-Ressource zu konfigurieren und voila, JPA läuft.

  

Was sind die Vorteile und   Nachteile von jedem?

Vorteile:

  • Vermeidet Low-Level-JDBC- und SQL-Code.
  • Es ist kostenlos (EclipseLink, z. B. für JPA).
  • JPA ist ein Standard und Teil von EJB3 und Java EE.

Das ist alles, was ich über Hibernate weiß.

    
Buhake Sindi 15.04.2011, 15:22
quelle
7

JPA ist ein API-Standard für das Persistenz-Mapping. Es wurde lange nach dem Winterschlaf entwickelt und stark davon beeinflusst.

Um JPA zu verwenden, benötigen Sie eine JPA-Implementierung. Hibernate ist eine solche JPA-Implementierung, da sie erweitert wurde, um die von ihr inspirierte API zu implementieren.

Darüber hinaus bietet Hibernate einige Funktionen, die nicht vom JPA-Standard angeboten werden, aber diese werden normalerweise nicht benötigt.

Wenn Sie andererseits nur JPA-Funktionen verwenden, sollte Ihr Code auch mit einer anderen JPA-Implementierung arbeiten. Die Erfahrung zeigt, dass die Kompatibilität selten 100% ist. Der Wechsel zu einer anderen Implementierung sollte jedoch nicht viel Arbeit erfordern.

    
Michael Borgwardt 15.04.2011 15:27
quelle
3

JPA ist ein Standard, der von vielen verschiedenen Bibliotheken wie TopLink zum Beispiel implementiert wird. Hibernate ist eine Bibliothek, die lange vor JPA existiert und einige Funktionen hat, die JPA nicht hat.

Die Kriterien api ist in beiden, aber ich denke, Hibernate ist viel einfacher zu bedienen. Wenn Sie also JPA verwenden, können Sie problemlos zu einer anderen Implementierung wechseln, oder Sie haben ein Basisprojekt, das Basis-JPA-Dao definiert, und zwei verschiedene Projekte, die eine andere Implementierung verwenden.

Wenn Sie Hibernate verwenden, ist es wahrscheinlich einfacher, Beispiele und Experten zu finden.

    
Riccardo Cossu 15.04.2011 15:27
quelle
1

Hibernate war die Inspiration für die neu-moderne JPA. EJB 3.0 ORM ( JPA ) basiert auf einem einfachen, sauberen und schönen Hibernate.

Als JPA geboren wurde, wurde Hibernate zur JPA-Implementierungsbasis von JBoss. Wenn Sie JBoss und JPA verwenden, verwenden Sie wahrscheinlich Hibernate.

Ich kann keinen signifikanten Vorteil der einen gegenüber dem anderen erkennen. Vielleicht ist die Hauptsache, dass Sie eine reine JavaEE-Implementierung verwenden, wenn Sie JPA verwenden. Das bedeutet, dass Sie theoretisch zu einem anderen Anwendungsserver wechseln könnten und Ihre Anwendung funktioniert auch dann, wenn der neue Anwendungsserver nicht Hibernate verwendet. Vergiss nicht, dass ich IN THEORY gesagt habe. : -)

JPA verwendet Hibernate in einigen Anwendungsservern. RedHat JBoss ist das Hauptprodukt, das Hibernate für seine JPA-Implementierung verwendet.

    
Pablo Santa Cruz 15.04.2011 15:24
quelle
0

Ich werde versuchen, es so einfach wie möglich zu erklären.

  

-Was sind die Vor- und Nachteile von jedem?

JPA-Eigenschaften sind portabel. Die Bibliotheken, die mit javax.persistence beginnen, sind mit JPA verknüpft. Anbieter wie Hibernate bieten nicht übertragbare Eigenschaften. Daher empfiehlt sich die Verwendung von javax.persistence, wann immer dies möglich ist.

  

- Hibernate verwendet JPA oder umgekehrt (hängen sie voneinander ab)?

JPA ist eine Abstraktion über JDBC. JPA ist eine Spezifikation. Es braucht einen Anbieter. Hibernate ist einer der vielen Anbieter.

  

- Welche Features hat der Benutzer aus Sicht der Features, die nicht die anderen haben?

Hibernate = ORM + Implementierung von JPA So finden Sie einige zusätzliche Funktionen in Hibernate.

  

- Noch andere Unterschiede zwischen beiden?

Hibernate hat sich in den letzten Jahren stark verändert. Ich finde JPA konsistent. Falls nicht benötigt, versuchen Sie möglichst javax.persistence-Bibliotheken zu verwenden.

    
Miguel Ángel 01.09.2016 17:19
quelle
0
%Vor%     
Koray Tugay 07.08.2015 14:45
quelle

Tags und Links