Was ist der Unterschied zwischen der @Entity in Hibernate und JPA
Wenn ich das Tue, Beispiel Hibernate eigenständiges Programm, bisschen verwirrend entstand in meinem Kopf, mit der Nutzung der @Entity annotation.
Hier meine Frage, ich habe einen persistenten Klasse mit @Entity aus javax.Persistenz-Paket, dann ist es wunderbar funktioniert, aber wenn ich durch @Entity-annotation mit Hibernate-API(ich.e von org.hibernate.Anmerkungen Paket), dann gibt es org.hibernate.MappingException: Unbekannt Einheit: com.jetti.test.Mitarbeiter
Geben, etwas mehr Erklärung sind sehr geschätzt.
- Das SO ein post erklärt den Unterschied zwischen den beiden Anmerkungen und warum dein mapping ist nicht gefunden: stackoverflow.com/questions/955515/...
- und Hibernate Entity ist veraltet, so dass Sie nicht benutzen sollte es FWIW; siehe javadocs eher als nur mit
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dokumentation
So, hibernate ist
@Entity
nur ergänzt diejavax.persistence.Entity
, und gibt ein paar fein-tuning-Optionen.JPA itself is just a specification, not a product; it cannot perform persistence or anything else by itself. JPA is just a set of interfaces, and requires an implementation.
. Im Zusammenhang mit dieser Frage, es bedeutet, dass Hibernate implementiert Unterstützung fürjavax.persistence.Entity
, aber fügt hinzu, mehr Funktionen mitorg.hibernate.annotations.Entity
.Der Unterschied ist der gleiche zwischen Hibernate und JPA, eher JPA ist nur eine Spezifikation, was bedeutet, es gibt keine Umsetzung, und Hibernate für die Implementierung.
Können Sie Anmerkungen in Ihren Klassen mit JPA-Annotationen, aber ohne Umsetzung nichts passieren wird.
In einer abstrakten Art und Weise, die Sie betrachten können "JPA" als die Leitlinien.
Wenn Sie Hibernate mit JPA, sind Sie eigentlich mit dem Überwintern von JPA-Implementierung. Der Vorteil ist, dass man die swap-Hibernate-Implementierung von JPA für eine weitere Implementierung der JPA-Spezifikation (Eclipse Link, DataNucleuse,..) sonst wenn Sie direkt Hibernate können Sie nicht nur Umschaltung zu einem anderen ORM.
Ich hoffe es war hilfreich.
JPA ist nicht eine ORM-Implementierung, sondern nur Richtlinien zur Umsetzung des Object Relational Mapping (ORM) und es gibt keine zugrunde liegenden code für die Umsetzung. es wird keine konkrete Funktionalität für Ihre Anwendung. Sein Zweck ist es, eine Reihe von Regeln und Richtlinien, die befolgt werden können, durch die JPA-Implementierung-Anbieter zu erstellen, die ein ORM-Implementierung in einer standardisierten Art und Weise.
Hibernate ist ein JPA-provider. Wenn es neue änderungen der Spezifikation, der Ruhezustand würde die Veröffentlichung seiner aktualisierten implementation der JPA-Spezifikation. Andere beliebte JPA-Anbieter Eclipse Link (Referenz-Implementierung), OpenJPA, etc. Siehe Andere Anbieter hier
@javax.persistence.Entity
ist eine Empfehlung für einen provider implementiert JPA-Richtlinie@org.hibernate.annotations.Entity
ist eine Implementierung für ein Hibernate-ORMDarüber hinaus können Sie siehe das andere Thema
Den org.hibernate.Anmerkungen.Entity Anmerkung ist veraltet und es ist zum löschen vorgemerkt:
Jedes Attribut hat eine eigene annotation (z.B. DynamicInsert, DynamicUpdate) und so sollten Sie immer Klagen die javax.die Persistenz.Entity alternative.