Projet d’intégration GL JAVA WEB
Connexion à la base de données - JDBC
ESPRIT - UP JAVA Année universitaire 2024/2025
JDBC
2
Avant JDBC...
● Avant JDBC, il était difficile d’accéder à des bases de données SQL:
- Utilisation de librairies C/C++
- Utilisation d'API natives comme ODBC
● Problème majeur
- dépendance totale avec le SGBD utilisé
3
SGBD?
● En informatique, un système de gestion de base de données (abr. SGBD) est un
logiciel système servant à stocker, à manipuler ou gérer, et à partager des informations
dans une base de données, en garantissant la qualité, la pérennité et la confidentialité
des informations, tout en cachant la complexité des opérations.
● Exp: MySQL, Oracle DataBase, PostgreSQL,etc...
4
JDBC: Java DataBase Connectivity
● API d’interaction avec un SGBD contenant :
- un ensemble de classes et d’interfaces
● Permet de:
1. Établir une connexion avec un SGBD
2. Envoyer des requêtes SQL
3. Récupérer des résultats de requêtes
⇒ Permettre aux programmeurs Java d’écrire un code indépendant de la base de
données et du moyen de connexion utilisé
5
JDBC: Java DataBase Connectivity
6
JDBC: Java DataBase Connectivity
● Drivers
- chaque SGBD utilise un pilote (driver) qui lui est propre et qui permet de
convertir les requêtes JDBC dans le langage natif du SGBD
- le driver est un ensemble de classes qui implantent les interfaces de JDBC
- les drivers sont le lien entre le programme Java et le SGBD
7
JDBC: Java DataBase Connectivity
● API JDBC
- Interface uniforme permettant un accès homogène aux SGBD
- Simple à mettre en œuvre
- Indépendant du SGBD support
- Supportant les fonctionnalités de base du langage SQL
8
Mise en place
9
JDBC: Mise en place
- Importer le package en [Link].*
- Etablir la connexion au SGBD
- Créer une requête (ou instruction SQL)
- Exécuter la requête
NB: Vous devez télécharger la dernière version de l’IDE IntelliJ
10
JDBC: Mise en place
● Etape 1 :Base de données MySQL
- Créer une base mysql ‘esprit’ et une table personne (avec 3 champs: id, nom
et prenom)
11
JDBC: Mise en place
● Etape 2 : MySQL JDBC Driver
- Ouvrez le fichier « [Link] » de votre projet.
- Faites un clic droit sur le fichier et sélectionnez
l'option « Generate …» dans le menu contextuel.
12
JDBC: Mise en place
- Choisissez « Dependency » dans la liste des options.
Cela ouvrira une fenêtre intitulée « Maven Artifact
Search ».
- Dans l'onglet « Search For Artifact », saisissez
«mysql:mysql-connector-java » et choisissez la
dernière version disponible.
- Appuyez sur le bouton « Load Maven Changes »
pour télécharger et installer automatiquement la
bibliothèque dans votre projet.
13
JDBC: Mise en place
● Etape 3 : Etablir une connexion
- Création d’un objet de type Connection : conn
- conn = [Link](url, user, pwd);
● Etape 4 : Traiter les exceptions
- SQLException
14
JDBC: Mise en place
● Etape 5 : Les attributs de connexion
- String url = "jdbc:mysql://localhost:3306/esprit";
- String user = "root";
- String pwd = "";
- Connection conn;
- Statement ste;
15
JDBC: Création d’un statement
● L'interface Statement possède les méthodes nécessaires pour réaliser les requêtes sur la
base
⇒ exécuter des instruction SQL
● 2 types de Statement :
- Statement ⇒ requêtes statiques simples
- PreparedStatement ⇒ requêtes dynamiques précompilées
16
JDBC: Statement Vs. Prepared Statement
● Lors de l'envoi d'une requête pour exécution 4 étapes doivent être faites :
- analyse de la requête
- compilation de la requête
- optimisation de la requête
- exécution de la requête
⇒ et ceci même si cette requête est la même que la précédente !! Or les 3 premières
étapes ont déjà été effectuées dans ce cas.
17
JDBC: Statement Vs. Prepared Statement
● Les bases de données définissent la notion de requête préparée, requête où les 3
premières étapes ne sont effectuées qu'une seule fois.
● JDBC propose l'interface PreparedStatement pour modéliser cette notion
18
JDBC: Création d’un statement
● Créer un STATEMENT
- ste = [Link]();
● Requête SQL d’ajout
- String req = "Insert into personne values(12,'Tounsi','Wael')";
● Exécuter la Requête
- [Link](req) ⇒ (insert, update, delete)
- [Link](req) ⇒ select
19
Créer une classe Personne
● Créer une classe
[Link]
20
JDBC: Méthodes CRUD
● Créer une classe ServicePersonne qui contient :
- public void ajouter(Personne per) throws SQLException{ }
- public void updatePrenom(Personne per) throws SQLException{ }
- public void delete(int id) throws SQLException{ }
- public Arraylist<Personne> afficherAll() throws SQLException{ }
⇒ Utiliser le ResultSet pour récupérer le résultat de executeQuery
21
JDBC: Fermeture des connexions
● Pour terminer proprement un traitement, il faut fermer les différents espaces ouverts
- [Link]();
- [Link]();
- [Link]();
22
Correspondance Java / BD
23
Requêtes précompilées : PreparedStatemt
● PreparedStatemt : envoie une requête sans paramètres à la base de données:
- plus rapide qu’un Statement classique
- le SGBD n’analyse qu’une seule fois la requête
⇒ requêtes dynamiques précompilées (avec paramètres d’entrée/sortie)
● La méthode prepareStatement() de l’objet Connection crée un PreparedStatement
24
Requêtes précompilées : PreparedStatemt
25
Insertion
26
Insertion
27
Sélection
28
Modification
29
Suppression
30
Merci pour votre attention
31