Unterschied zwischen JPA und Hibernate

JPA vs Winterschlaf

Nahezu alle Unternehmensanwendungen müssen regelmäßig auf relationale Datenbanken zugreifen. Ein Problem bei früheren Technologien (wie JDBC) war jedoch die Impedanzinkongruenz (Unterschied zwischen objektorientierten und relationalen Technologien). Eine Lösung für dieses Problem wurde durch die Einführung einer abstrakten Schicht namens Persistence Layer eingeführt, die den Datenbankzugriff aus der Geschäftslogik kapselt. JPA (Java Persistence API) ist ein Framework für die Verwaltung relationaler Daten (unter Verwendung der Persistenzschicht) in Java-Anwendungen. Es gibt viele Anbieterimplementierungen von JPA, die in der Java-Entwicklergemeinschaft verwendet werden. Hibernate ist die populärste JPA-Implementierung (DataNucleus, EclipseLink und OpenJPA sind einige andere). Die neueste JPA-Version (JPA 2.0) wird vollständig von Hibernate 3.5 unterstützt, das im März 2010 veröffentlicht wurde.

Was ist JPA??

JPA ist ein Framework zum Verwalten relationaler Daten für Java. Es kann mit Anwendungen verwendet werden, die JSE (Java Platform, Standard Edition) oder JEE (Java Platform, Enterprise Edition) verwenden. Die aktuelle Version ist JPA 2.0, die am 10. Dezember 2009 veröffentlicht wurde. JPA löste die EJB 2.0- und EJB 1.1-Entity-Beans ab (die wegen ihrer Schwergewichtigkeit von der Java-Entwicklergemeinschaft heftig kritisiert wurden). Obwohl Entity-Beans (in EJB) Persistenzobjekte bereitstellten, verwendeten viele Entwickler stattdessen relativ leichte Objekte, die von DAO (Data Access Objects) und anderen ähnlichen Frameworks angeboten werden. Als Ergebnis wurde JPA eingeführt, und es wurden viele der ordentlichen Funktionen der oben genannten Frameworks erfasst.

Die in JPA beschriebene Persistenz umfasst die API (definiert in javax.persistence), JPQL (Java Platform, Enterprise Edition) und Metadaten, die für relationale Objekte erforderlich sind. Der Status einer Persistenzentität wird normalerweise in einer Tabelle beibehalten. Instanzen einer Entität entsprechen Zeilen der Tabelle der relationalen Datenbank. Metadaten werden verwendet, um die Beziehungen zwischen Entitäten auszudrücken. Anmerkungen oder separate XML-Deskriptordateien (bereitgestellt mit der Anwendung) werden verwendet, um Metadaten in Entitätsklassen anzugeben. JPQL (ähnlich wie SQL-Abfragen) wird zum Abfragen von gespeicherten Entitäten verwendet.

Was ist Winterschlaf??

Der Ruhezustand ist ein Framework, das für objektrelationales Mapping verwendet werden kann, das für Java-Programmiersprachen vorgesehen ist. Genauer gesagt handelt es sich um eine ORM-Bibliothek (Object Relational Mapping), die zur Abbildung eines objektrelationalen Modells in ein herkömmliches relationales Modell verwendet werden kann. Einfach ausgedrückt, wird eine Zuordnung zwischen Java-Klassen und Tabellen in relationalen Datenbanken sowie zwischen Java-zu-SQL-Datentypen erstellt. Der Ruhezustand kann auch zum Abfragen und Abrufen von Daten verwendet werden, indem SQL-Aufrufe generiert werden. Daher wird der Programmierer von der manuellen Behandlung von Ergebnissätzen und Konvertierungsobjekten befreit. Hibernate wird als kostenloses und unter der GNU-Lizenz vertriebenes Open Source-Framework veröffentlicht. Eine Implementierung für die JPA-API ist in Hibernate 3.2 und höheren Versionen enthalten. Gavin King ist der Gründer von Hibernate.

Was ist der Unterschied zwischen JPA und Hibernate??

JPA ist ein Framework zur Verwaltung relationaler Daten in Java-Anwendungen, während Hibernate eine spezifische Implementierung von JPA ist (idealerweise können JPA und Hibernate nicht direkt miteinander verglichen werden). Mit anderen Worten ist Hibernate eines der beliebtesten Frameworks, das JPA implementiert. Hibernate implementiert JPA durch Hibernate Annotation- und EntityManager-Bibliotheken, die über Hibernate Core-Bibliotheken implementiert werden. Sowohl EntityManager als auch Annotations folgen dem Lebenszyklus von Hibernate. Die neueste JPA-Version (JPA 2.0) wird vollständig von Hibernate 3.5 unterstützt. JPA hat den Vorteil einer einheitlichen Benutzeroberfläche, so dass die Entwicklergemeinde damit besser vertraut ist als Hibernate. Auf der anderen Seite können native Hibernate-APIs als leistungsfähiger angesehen werden, da ihre Funktionen eine Obermenge von JPA sind.