Unterschied zwischen JPA und Hibernate

Unterschied zwischen JPA und Hibernate

JPA gegen Hibernate

Fast alle Unternehmensanwendungen müssen regelmäßig auf relationale Datenbanken zugreifen. Ein Problem mit früheren Technologien (wie JDBC) 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 Persistenzschicht eingeführt, die den Datenbankzugriff aus der Geschäftslogik zusammenfasst. JPA (Java Persistence API) ist ein Rahmen für die Verwaltung relationaler Daten (unter Verwendung der Persistenzschicht) in Java -Anwendungen. Es gibt viele Anbieter -Implementierungen von JPA, die innerhalb der Java -Entwicklergemeinschaft verwendet werden. Hibernate ist die beliebteste solche Implementierung von JPA (Datanucleus, EclipSelink und OpenJPA sind einige andere). Die neueste JPA -Version (JPA 2.0) wird vollständig von Hibernate 3 unterstützt.5, der im März 2010 veröffentlicht wurde.

Was ist JPA?

JPA ist ein Rahmen für die Verwaltung von relationalen Daten für Java. Es kann mit Anwendungen mit JSE (Java -Plattform, Standard Edition) oder JEE (Java -Plattform, Enterprise Edition) verwendet werden. Die aktuelle Version ist JPA 2.0, das am 10. Dezember 2009 veröffentlicht wurde. JPA ersetzt EJB 2.0 und EJB 1.1 Entitätsbohnen (die stark dafür kritisiert wurden, von der Java -Entwicklergemeinschaft schwerwiegend zu sein). Obwohl Entitätsbohnen (in EJB) Persistenzobjekte zur Verfügung stellten, wurden viele Entwickler verwendet, um relativ leichte Objekte zu verwenden, die von DAO (Datenzugriffsobjekte) und anderen ähnlichen Frameworks angeboten wurden. Infolgedessen wurde JPA eingeführt und erfuhr viele der ordentlichen Merkmale der oben genannten Frameworks.

Persistenz, wie in JPA beschrieben die API (definiert in Javax definiert.Persistenz), JPQL (Java -Plattform, Enterprise Edition) und Metadaten, die für relationale Objekte erforderlich sind. Der Zustand einer Persistenzentität wird typischerweise in einen Tisch angehalten. 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 (mit der Anwendung bereitgestellt) werden verwendet, um Metadaten in Entitätsklassen anzugeben. JPQL, die SQL -Abfragen ähnlich ist, werden verwendet, um gespeicherte Einheiten abzufragen.

Was ist Winterschlaf?

Hibernate ist ein Framework, das für die Objektrelationskartierung verwendet werden kann, die für die Java-Programmiersprache bestimmt ist. Genauer. In einfachen Worten erstellt es eine Zuordnung zwischen Java -Klassen und Tabellen in relationalen Datenbanken, ebenfalls zwischen Java und SQL -Datentypen. Hibernate kann auch zum Abfragen und Abrufen von Daten verwendet werden, indem SQL -Anrufe generiert werden. Daher ist der Programmierer von der manuellen Handhabung von Ergebnismengen und Konvertierobjekten entlastet. Hibernate wird als kostenloses und Open -Source -Framework veröffentlicht, das unter GNU -Lizenz verteilt ist. Eine Implementierung für die JPA -API ist in Hibernate 3 bereitgestellt.2 und spätere Versionen. Gavin King ist der Gründer von Hibernate.

Was ist der Unterschied zwischen JPA und Hibernate?

JPA ist ein Rahmen für die Verwaltung von relationalen Daten in Java -Anwendungen, während Hibernate eine spezifische Implementierung von JPA ist (so idealerweise kann JPA und Hibernate nicht direkt verglichen werden). Mit anderen Worten, Hibernate ist eines der beliebtesten Frameworks, die JPA implementiert. Hibernate implementiert JPA durch Hibernate -Annotation und EntityManager -Bibliotheken, die auf Hibernate -Kernbibliotheken implementiert sind. Sowohl EntityManager als auch Anmerkungen folgen dem Lebenszyklus des Winterschlafes. Die neueste JPA -Version (JPA 2.0) wird vollständig von Hibernate 3 unterstützt.5. JPA hat den Vorteil, dass eine Schnittstelle standardisiert ist, sodass die Entwicklergemeinschaft damit besser vertraut ist als Hibernate. Auf der anderen Seite können einheimische Hibernate -APIs als leistungsfähiger angesehen werden.