Enterprise BeansEdit
La specifica EJB 3.0 (essa stessa parte della piattaforma Java EE 5) includeva una definizione della Java Persistence API. Tuttavia, gli utenti finali non hanno bisogno di un contenitore EJB o di un application server Java EE per eseguire applicazioni che usano questa API di persistenza. Le versioni future della Java Persistence API saranno definite in una JSR e in una specifica separata piuttosto che nella JSR/specifica EJB.
La Java Persistence API sostituisce la soluzione di persistenza di EJB 2.0 CMP (Container Managed Persistence).
Java Data Objects APIEdit
La Java Persistence API è stata sviluppata in parte per unificare la Java Data Objects API e la EJB 2.0 Container Managed Persistence (CMP) API. Dal 2009 la maggior parte dei prodotti che supportano ciascuna di queste API supportano la Java Persistence API.
La Java Persistence API specifica la persistenza solo per sistemi di gestione di database relazionali. Cioè, JPA si concentra sulla mappatura oggetto-relazionale (ORM) (si noti che ci sono fornitori JPA che supportano altri modelli di database oltre al database relazionale, ma questo è al di fuori dello scopo per cui JPA è stato progettato). Fate riferimento alla sezione 1 dell’introduzione della specifica JPA 2 per chiarire il ruolo di JPA, che afferma molto chiaramente “L’obiettivo tecnico di questo lavoro è di fornire una struttura di mappatura oggetto/relazionale per lo sviluppatore di applicazioni Java che utilizza un modello di dominio Java per gestire un database relazionale.”
La specifica Java Data Objects supporta l’ORM, così come la persistenza su altri tipi di modelli di database, per esempio i database di file piatti e i database NoSQL, compresi i database di documenti, i database di grafici, così come letteralmente qualsiasi altro datastore concepibile.
Service Data Object APIEdit
I progettisti della Java Persistence API miravano a fornire una persistenza relazionale, con molte delle aree chiave prese da strumenti di mappatura oggetto-relazionale come Hibernate e TopLink. Java Persistence API ha migliorato e sostituito EJB 2.0, evidenziato dalla sua inclusione in EJB 3.0. La Service Data Objects (SDO) API (JSR 235) ha un obiettivo molto diverso dalla Java Persistence API ed è considerata complementare. L’API SDO è progettata per architetture orientate ai servizi, formati di dati multipli piuttosto che solo dati relazionali, e linguaggi di programmazione multipli. Il Java Community Process gestisce la versione Java della SDO API; la versione C++ della SDO API è gestita tramite OASIS.
HibernateEdit
Hibernate è un framework open source di mappatura oggetti-relazionale per Java. Le versioni 3.2 e successive forniscono un’implementazione per la Java Persistence API. Gavin King ha fondato il progetto Hibernate. Ha rappresentato JBoss su JSR 220, il gruppo di esperti del JCP incaricato di sviluppare JPA. Questo ha portato a continue controversie e speculazioni sulla relazione tra JPA e Hibernate. Sun Microsystems ha dichiarato che le idee provenivano da diversi framework, inclusi Hibernate e Java Data Objects.
Spring Data JPAEdit
Un’implementazione dell’astrazione del repository che è un elemento chiave del Domain-Driven Design basato sul framework applicativo Java Spring. Supporta in modo trasparente tutte le implementazioni JPA disponibili e supporta le operazioni CRUD così come la comoda esecuzione di query al database.