Differenza tra JPA e Hibernate

Anonim

JPA vs Hibernate

Quasi tutte le applicazioni aziendali sono necessarie per accedere regolarmente ai database relazionali. Ma un problema con le tecnologie precedenti (come JDBC) è stato l'impedenza non corrispondente (differenza tra le tecnologie orientate agli oggetti e le relazioni). Una soluzione per questo problema è stata introdotta attraverso l'introduzione di uno strato astratto chiamato strato di persistenza, che incapsula l'accesso al database dalla logica aziendale. JPA (Java Persistence API) è un framework dedicato alla gestione dei dati relazionali (utilizzando il livello di persistenza) nelle applicazioni Java. Ci sono molte implementazioni del fornitore di JPA utilizzate all'interno della comunità Java Developer. Hibernate è l'applicazione più popolare di JPA (DataNucleus, EclipseLink e OpenJPA sono altri). La versione più recente JPA (JPA 2. 0) è pienamente supportata da Hibernate 3. 5, rilasciata nel marzo 2010.

Che cos'è JPA?

JPA è un framework per la gestione dei dati relazionali per Java. Può essere utilizzato con applicazioni che utilizzano JSE (Java Platform, Standard Edition) o JEE (Java Platform, Enterprise Edition). La sua versione attuale è JPA 2. 0, rilasciata il 10 dicembre 2009. L'JPA ha sostituito EJB 2. 0 e EJB 1. 1 entità fagioli (che sono stati fortemente criticati per essere pesi massimi dalla comunità Java Developer). Anche se i fagiali di entità (in EJB) forniscono oggetti di persistenza, molti sviluppatori sono stati utilizzati per utilizzare oggetti relativamente leggeri offerti da DAO (Data Access Objects) e altri quadri simili. Di conseguenza, l'APE è stato introdotto e ha catturato molte delle caratteristiche del quadro di cui sopra.

La persistenza come descritto in JPA copre l'API (definita in javax. Persistenza), JPQL (Java Platform, Enterprise Edition) e metadati necessari per gli oggetti relazionali. Lo stato di un'entità di persistenza è tipicamente persistente in una tabella. Le istanze di un'entità corrispondono a righe della tabella del database relazionale. I metadati vengono utilizzati per esprimere le relazioni tra le entità. Annotazioni o file separati XML descrittori (implementati con l'applicazione) vengono utilizzati per specificare i metadati nelle classi entità. JPQL, che è simile alle query SQL, viene utilizzato per interrogare le entità memorizzate.

Che cosa è Hibernate?

Hibernate è un framework che può essere utilizzato per mappare oggetti relazionali destinati al linguaggio di programmazione Java. Più specificamente, è una libreria ORM (mapping relazionale degli oggetti) che può essere utilizzata per mappare il modello relazionale object-to al modello relazionale convenzionale. In termini semplici, crea una mappatura tra classi Java e tabelle in database relazionali, anche tra i tipi di dati Java a SQL. Hibernate può anche essere utilizzato per query e recupero dati generando chiamate SQL.Pertanto, il programmatore viene sollevato dalla gestione manuale dei set di risultati e la conversione di oggetti. Hibernate viene rilasciato come un framework gratuito e open source distribuito sotto licenza GNU. Un'implementazione per l'API JPA è fornita in versione Hibernate 3. 2 e versioni successive. Gavin King è il fondatore di Hibernate.

Qual è la differenza tra JPA e Hibernate?

JPA è un framework per la gestione dei dati relazionali nelle applicazioni Java, mentre la modalità Hibernate è un'applicazione specifica dell'API (quindi idealmente, JPA e Hibernate non possono essere confrontati direttamente). In altre parole, Hibernate è uno dei quadri più popolari che implementa il JPA. Ibernate implementa JPA tramite librerie di Annotazione Hibernate e EntityManager che vengono implementate in cima alle librerie di Hibernate Core. Sia EntityManager che annotazioni seguono il ciclo di vita di Hibernate. La versione più recente JPA (JPA 2. 0) è pienamente supportata da Hibernate 3. 5. L'JPA ha il vantaggio di avere un'interfaccia standardizzata, per cui la comunità degli sviluppatori avrà più familiarità con quella di Hibernate. D'altra parte, le API Hibernate nativi possono essere considerate più potenti perché le sue funzionalità sono un superset di quello di JPA.