Retour

🗄️ JDBC & JPA

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 ?

Glisser pour continuer vers Modélisation UML
⬇️