Data - JDBC
Apprendre les fondamentaux JDBC pour le backend Java: connexions, prepared statements, transactions et mapping des resultats.
#java #data #jdbc #sql
Pourquoi cette etape est importante
JDBC est la base bas niveau de nombreuses bibliotheques data plus haut niveau. Le comprendre aide a debugger les problemes de connexion, de SQL et de transactions.
Composants principaux
DataSource: point d'entree pour obtenir des connexionsConnection: session BDPreparedStatement: SQL parametreResultSet: lignes de resultat
Exemple de requete
String sql = "SELECT id, email FROM users WHERE id = ?";
try (Connection con = dataSource.getConnection();
PreparedStatement ps = con.prepareStatement(sql)) {
ps.setLong(1, 42L);
try (ResultSet rs = ps.executeQuery()) {
if (rs.next()) {
long id = rs.getLong("id");
String email = rs.getString("email");
System.out.println(id + " " + email);
}
}
}
Pourquoi les prepared statements sont essentiels
Ils :
- evitent l'injection SQL en separant requete et valeurs
- ameliorent la reutilisation des plans d'execution
Ne jamais construire une requete avec concat de string issue de l'utilisateur.
Transactions JDBC
try (Connection con = dataSource.getConnection()) {
con.setAutoCommit(false);
try {
// plusieurs requetes
con.commit();
} catch (Exception e) {
con.rollback();
throw e;
}
}
Mapping des resultats
Mappe chaque ligne vers un objet metier ou un DTO. Garde ce code explicite et testable.
record UserRow(long id, String email) {}
Erreurs frequentes
- ne pas fermer
Connection,Statement,ResultSet - SQL dynamique via concat non sure
- gestion transactionnelle fragile sans rollback
- ignorer silencieusement les exceptions SQL
A retenir
- JDBC donne du controle precis et facilite le debug
- Utiliser
PreparedStatementpar defaut - Gerer proprement transactions et fermeture des ressources
- Garder un mapping explicite et maintenable