La differenza è la stessa tra Hibernate e JPA, piuttosto JPA è solo una specifica, il che significa che non esiste implementazione e Hibernate è un'implementazione.
È possibile annotare le classi con annotazioni JPA, ma senza un'implementazione non accadrà nulla.
In modo astratto è possibile considerare "JPA" come linee guida.
Quando si utilizza l'ibernazione con JPA, si sta effettivamente utilizzando l'implementazione di Hibernate tramite JPA. Il vantaggio è che è possibile sostituire l'implementazione di JPA di Hibernate per un'altra implementazione delle specifiche JPA (Eclipse Link, DataNucleuse, ..) altrimenti se si utilizza direttamente Hibernate non è possibile passare a un altro ORM.
Spero che sia stato utile.
APP non è un'implementazione ORM ma è solo linee guida per attuare Object Relational Mapping (ORM) e non esiste un codice di fondo per l'attuazione. non fornirà alcuna funzionalità concreta alla tua applicazione. Il suo scopo è fornire una serie di regole e linee guida che possano essere seguite dai fornitori di implementazione JPA per creare un'implementazione ORM in modo standardizzato.
Hibernate è un provider JPA. In caso di nuove modifiche alle specifiche, l'ibernazione rilascia l'implementazione aggiornata per la specifica JPA. Altri provider JPA popolari sono Eclipse Link (implementazione di riferimento), OpenJPA, ecc.See Other provider here
@javax.persistence.Entity
è una linea guida per un provider che implementa JPA linea guida
@org.hibernate.annotations.Entity
è un'implementazione di Hibernate ORM
Futhermore è possibile see this other topic
Questo post SO spiega la differenza tra le due annotazioni e il motivo per cui la mappatura non è stata trovata: http://stackoverflow.com/questions/955515/difference-between-jpa-entity-and-hibernate-entity –
e Hibernate Entity è deprecato quindi non dovresti usarlo FWIW; vedi javadocs invece di usare solo –