Accès aux Bases de Données en Java
🔌 JDBC - Java Database Connectivity
API Java pour se connecter et exécuter des requêtes SQL.
// Connexion
Connection conn = DriverManager.getConnection(url, user, pwd);
// PreparedStatement (SÉCURISÉ contre SQL Injection)
String sql = "SELECT * FROM users WHERE id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, userId);
ResultSet rs = ps.executeQuery();
while (rs.next()) {
String nom = rs.getString("nom");
System.out.println(nom);
}⚠️ SQL Injection
DANGER : Ne JAMAIS concaténer les variables !
❌ "SELECT * FROM users WHERE id = " + userId
✅ PreparedStatement avec "?"
🏗️ JPA - Java Persistence API
ORM (Object-Relational Mapping) pour mapper objets ↔ tables SQL.
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nom;
private String email;
@OneToMany(mappedBy = "user")
private List<Commande> commandes;
}
// Utilisation
EntityManager em = ...;
User user = em.find(User.class, 1L);
user.setNom("Nouveau nom");
em.persist(user);🔗 Relations JPA
- @OneToOne : 1 utilisateur ↔ 1 profil
- @OneToMany : 1 user → plusieurs commandes
- @ManyToOne : Plusieurs commandes → 1 user
- @ManyToMany : Étudiants ↔ Cours
🎮 Quiz
1. Pourquoi utiliser PreparedStatement ?
2. JPA fait de l'ORM, c'est-à-dire ?