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).