JDBC vs JPA
Sostituisci il verboso boilerplate JDBC con l'object-relational mapping JPA e EntityManager.
Confronto Codice
✕ Java EE
String sql = "SELECT * FROM users WHERE id = ?";
try (Connection con = dataSource.getConnection();
PreparedStatement ps =
con.prepareStatement(sql)) {
ps.setLong(1, id);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
User u = new User();
u.setId(rs.getLong("id"));
u.setName(rs.getString("name"));
}
}
✓ Jakarta EE 8+
@PersistenceContext
EntityManager em;
public User findUser(Long id) {
return em.find(User.class, id);
}
public List<User> findByName(String name) {
return em.createQuery(
"SELECT u FROM User u WHERE u.name = :name",
User.class)
.setParameter("name", name)
.getResultList();
}
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Mapping degli oggetti
Le entità sono semplici classi annotate — nessuna traduzione manuale ResultSet-a-oggetto.
Query type-safe
JPQL opera su tipi di entità e campi invece di stringhe di tabella e colonna grezze.
Cache integrata
La cache di primo e secondo livello riduce automaticamente i round-trip al database.
Approccio Vecchio
JDBC
Approccio Moderno
EntityManager JPA
Dal JDK
11
Difficoltà
Intermedio
Supporto JDK
JDBC vs JPA
Disponibile
Ampiamente disponibile da Jakarta EE 8 / Java 11
Come funziona
JPA (Jakarta Persistence API) mappa gli oggetti Java alle righe del database, eliminando la necessità di elaborare manualmente i ResultSet e concatenare stringhe SQL. EntityManager fornisce find(), persist() e query JPQL così lavori con oggetti di dominio invece di SQL grezzo, mentre il container gestisce il connection pooling e le transazioni.
Documentazione Correlata