Cos'è jpa?

Java Persistence API (JPA)

JPA, acronimo di Java Persistence API, è una specifica Java che fornisce un approccio standardizzato per la gestione della persistenza dei dati tra oggetti Java e un database relazionale. In sostanza, JPA semplifica lo sviluppo di applicazioni che necessitano di interagire con database.

Ecco alcuni concetti chiave:

  • Cos'è JPA? E' una specifica, non una implementazione. Definisce un set di interfacce e annotazioni che le implementazioni devono seguire.
  • Implementazioni JPA: Implementazioni popolari di JPA includono Hibernate, EclipseLink e Apache OpenJPA.
  • Entity: Un' Entity è una classe Java che rappresenta una tabella nel database. Viene annotata con @Entity.
  • EntityManager: L' EntityManager è l'interfaccia principale utilizzata per interagire con il contesto di persistenza. Fornisce metodi per creare, leggere, aggiornare ed eliminare (CRUD) entità.
  • Persistence Unit: Una Persistence%20Unit definisce l'ambiente di persistenza, includendo la configurazione del database, le classi entity gestite e altre impostazioni correlate alla persistenza.
  • JPQL (Java Persistence Query Language): JPQL è un linguaggio di query orientato agli oggetti simile a SQL, ma opera sulle entità Java anziché direttamente sulle tabelle del database. Consente di recuperare dati dal database utilizzando la sintassi orientata agli oggetti.
  • ORM (Object-Relational Mapping): JPA è un framework ORM. Object-Relational%20Mapping è una tecnica di programmazione per convertire i dati tra il sistema di tipi incompatibili utilizzando un paradigma orientato agli oggetti e un database relazionale. Questo crea un "database virtuale orientato agli oggetti".
  • Annotations: JPA si basa pesantemente su annotations per mappare le classi Java alle tabelle del database. Annotazioni come @Entity, @Table, @Id, @Column, @GeneratedValue, @OneToMany, @ManyToOne sono comunemente usate.
  • Transactions: JPA supporta le transactions per garantire l'integrità dei dati. Le transazioni garantiscono che le operazioni sul database siano eseguite in modo atomico, consistente, isolato e duraturo (ACID).

Vantaggi di JPA:

  • Standardizzazione: Fornisce un approccio standardizzato per la persistenza dei dati, rendendo il codice più portabile tra diverse implementazioni JPA.
  • Semplicità: Semplifica lo sviluppo di applicazioni che interagiscono con database riducendo la quantità di codice boilerplate necessario.
  • Mappatura Object-Relational: Automatizza la mappatura tra oggetti Java e tabelle del database, riducendo lo sforzo manuale.
  • Astrazione: Astrazione dal database sottostante, consentendo di cambiare il database senza dover modificare il codice dell'applicazione (in molti casi).