2013-02-21 12 views
5

fand ich viele ähnliche FragenUnterschied zwischen Hibernate und Hibernate JPA

aber niemand antwortet meine nächste Frage. Welchen Unterschied zwischen dem klassischen Hibernate-Ansatz mit org.hibernate.SessionFactory und JPA javax.persistence.EntityManager Implementierung? Ich habe gehört, dass diese JPA-Implementierung verwendet org.hibernate.SessionFactory und funktioniert wie Wrapper, ist es real? Hier

Antwort

10

In der Tat.

JPA ist einfach eine API, mit der Sie von der verwendeten Persistenzschicht abstrahieren können. Hibernate bietet eine Implementierung der EntityManager-Schnittstelle, die als adapter fungiert - es verwendet die gleichen zugrunde liegenden Methoden wie ein Ruhezustand SessionManager.

Die Idee ist, dass Sie zum Beispiel Ihre Implementierung auf Eclipse Link umstellen können und keinen Quellcode ändern müssen.

+0

viel dank :) – Lies

0

ist die Antwort von Ihnen in Frage

Was diference zwischen klassischem Hibernate Ansatz
org.hibernate.SessionFactory und JPA javax.persistence.EntityManager
Implementierung?

org.hibernate.SessionFactory 

, wenn Sie die undeline ORM iBatis ändern (z), müssen Sie auch den Code ändern.

javax.persistence.EntityManager 

, wenn Sie die undeline ORM iBatis (für z) ändern Sie nicht brauchen, um den Code zu ändern.

+0

Warum konnte ich nicht downvote ... hast du Frage gelesen? – Lies

+1

Ich habe deine ersten Fragen beantwortet. – JRR

1

auf Ihre erste Frage,

JPA ist eine Java-API-Spezifikation, die die Verwaltung von relationalen Daten in Anwendungen mit Hilfe von Java Platform beschreibt. Hibernate ist eine ORM (Object Relational Mapping) -Bibliothek, die der JPA-Spezifikation folgt.

Sie können JPA als eine Reihe von Regeln, die von Hibernate implementiert wird, denken.

und Antwort für Ihre zweite Frage ist

Als JPA nur eine abstrahierte Persistenzschicht es Implementierung erfordert. und Hibernate implementiert die EntityManager-Schnittstelle, die den Hibernate-SessionManager verwendet.

Auf diese Weise sind Sie völlig unabhängig von der Implementierung, dh Sie können jederzeit zu einem beliebigen von Hibernate oder OenJPA wechseln, ohne dass zusätzliche Codeänderungen erforderlich sind.

3

JPA ist nur eine Spezifikation, was bedeutet, dass es keine Implementierung gibt. Sie können Ihre Klassen mit JPA-Annotationen so oft kommentieren, wie Sie möchten, aber ohne eine Implementierung wird nichts passieren.Stellen Sie sich JPA als die zu befolgenden Richtlinien oder eine Schnittstelle vor, während die JPA-Implementierung von Hibernate Code ist, der die API erfüllt, wie sie in der JPA-Spezifikation definiert ist, und die Funktionalität unter der Haube bietet. Wenn Sie Hibernate mit JPA verwenden, verwenden Sie tatsächlich die Hibernate JPA-Implementierung. Der Vorteil besteht darin, dass Sie die Implementierung von JPA von Hibernate für eine andere Implementierung der JPA-Spezifikation austauschen können. Wenn Sie gerade Hibernate verwenden, sperren Sie in die Implementierung, da andere ORMs möglicherweise andere Methoden/Konfigurationen und Anmerkungen verwenden, daher können Sie nicht einfach zu einem anderen ORM wechseln.

+0

Sie haben es wirklich gut erklärt. Vielen Dank! –