Unterschied zwischen JPA und Hibernate
JPA vs Hibernate
Fast alle Unternehmensanwendungen müssen regelmäßig auf relationale Datenbanken zugreifen. Ein Problem, das mit früheren Technologien (wie JDBC) konfrontiert war, war jedoch die Impedanzfehlanpassung (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 von 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 Herstellerimplementierungen von JPA, die innerhalb der Java-Entwicklergemeinschaft verwendet werden. Hibernate ist die populärste solche Implementierung von JPA (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 zur Verwaltung 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 ersetzte EJB 2. 0 und EJB 1. 1 Entity-Beans (die von der Java-Entwicklergemeinde stark kritisiert wurden, weil sie schwergewichtig waren). Obwohl Entity-Beans (in EJB) Persistenzobjekte bereitgestellt haben, waren viele Entwickler daran gewöhnt, relativ leichte Objekte zu verwenden, die von DAO (Data Access Objects) und anderen ähnlichen Frameworks angeboten werden. Infolgedessen wurde die JPA eingeführt und viele der genialen Merkmale der oben genannten Frameworks erfasst.
Persistent, wie in JPA beschrieben, deckt die API (definiert in javax.persistence), JPQL (Java Platform, Enterprise Edition) und Metadaten ab, die für relationale Objekte benötigt werden. Der Status einer Persistenzentität wird normalerweise in einer Tabelle festgehalten. 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, das SQL-Abfragen ähnelt, wird zum Abfragen gespeicherter Entitäten verwendet.Hibernate ist ein Framework, das für objektrelationales Mapping verwendet werden kann, das für die Java-Programmiersprache bestimmt ist. Genauer gesagt handelt es sich um eine ORM-Bibliothek (objektrelationales Mapping), mit der objektrelationales Modell in ein herkömmliches relationales Modell abgebildet werden kann. Vereinfacht ausgedrückt, erstellt es eine Zuordnung zwischen Java-Klassen und Tabellen in relationalen Datenbanken, auch zwischen Java- und SQL-Datentypen. Hibernate kann auch für die Datenabfrage und -abfrage verwendet werden, indem SQL-Aufrufe generiert werden.Daher wird der Programmierer von der manuellen Handhabung von Ergebnismengen und der Konvertierung von Objekten befreit. Hibernate wird als ein freies und Open-Source-Framework veröffentlicht, das unter der GNU-Lizenz vertrieben wird. Eine Implementierung für JPA API ist in Hibernate 3. 2 und späteren Versionen verfügbar. Gavin King ist der Gründer von Hibernate.
Was ist der Unterschied zwischen JPA und Hibernate?
JPA ist ein Framework für die Verwaltung relationaler Daten in Java-Anwendungen, während Hibernate eine spezifische Implementierung von JPA ist (idealerweise können JPA und Hibernate nicht direkt verglichen werden). Mit anderen Worten, Hibernate ist einer der beliebtesten Frameworks, die JPA implementiert. Hibernate implementiert JPA über Hibernate Annotation- und EntityManager-Bibliotheken, die über Hibernate Core-Bibliotheken implementiert sind. EntityManager und Annotations folgen dem Lebenszyklus von Hibernate. Die neueste JPA-Version (JPA 2. 0) wird von Hibernate 3 vollständig unterstützt. 5. JPA hat den Vorteil, dass eine Schnittstelle standardisiert ist, sodass die Entwicklergemeinschaft besser vertraut ist als Hibernate. Auf der anderen Seite können native Hibernate-APIs als leistungsfähiger betrachtet werden, da ihre Funktionen eine Obermenge von JPA darstellen.