Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Composants de l'API JDBC | Aperçu de JDBC
Manipulation des Données Java avec Hibernate
course content

Contenu du cours

Manipulation des Données Java avec Hibernate

Manipulation des Données Java avec Hibernate

1. Aperçu de JDBC
2. Fondamentaux de Hibernate
3. Dernières Retouches

book
Composants de l'API JDBC

Composants de JDBC

Chaque API est composée de composants, chacun étant responsable de sa partie de la fonctionnalité de l'API. Cette structure peut également être comparée à une ligne de production, où chaque employé a un rôle dans chaque processus.

Par exemple, nous pouvons logiquement diviser les processus en plusieurs sous-processus :

  1. Établir une connexion à la base de données ;
  2. Envoyer une requête SQL à la base de données ;
  3. Recevoir des données sous forme de réponse ;
  4. Interpréter correctement ces données, en les adaptant au code Java ;
  5. Transformer les données en une structure de données plus pratique (par exemple, une liste, une collection ou une carte).

Pour chacun de ces processus, il existe un composant correspondant responsable de l'exécution réussie de ses instructions. Faisons connaissance avec ces composants plus en détail :

  • Connection : Cette interface établit une connexion à la base de données. Vous l'utilisez pour créer des instances de Statement ou PreparedStatement;
  • Statement et PreparedStatement : Ces interfaces sont utilisées pour exécuter des requêtes SQL. Statement est utilisé pour exécuter des requêtes SQL statiques sans paramètres, tandis que PreparedStatement est conçu pour exécuter des requêtes SQL avec un ou plusieurs paramètres;
  • ResultSet : Lorsque vous exécutez une requête SQL pour récupérer des données (SELECT), le ResultSet stocke les données récupérées, vous permettant de traiter chaque ligne du résultat séquentiellement;
  • DriverManager : Cette classe gère une liste de drivers JDBC disponibles. Elle sélectionne le driver approprié lors de l'établissement d'une connexion à la base de données.

Ainsi, à partir de cela, nous pouvons tirer une conclusion sur la façon dont les responsabilités sont réparties dans le code :

  • Les classes DriverManager et Connection effectuent le premier processus : Établir une connexion à la base de données. Le DriverManager sélectionne le pilote approprié pour le SGBD spécifique, et la Connection utilise ce pilote pour connecter le code à la base de données ;
  • Statement et PreparedStatement gèrent le deuxième processus, car ils nous permettent d'envoyer des requêtes SQL à la base de données et d'indiquer à la base de données quelles données nous voulons récupérer ;
  • ResultSet gère les processus restants. C'est avec l'aide de cette classe et de ses méthodes que nous pouvons obtenir les données dans un format qui nous convient, tel qu'une List.

Ainsi, nous pouvons voir que chacun des composants sert son objectif. Cette structure est correcte et adhère aux principes SOLID.

Note

Nous discuterons des principes SOLID dans un cours séparé. Ces principes définissent un code d'application bien écrit en fournissant des lignes directrices pour écrire le code correctement.

Interaction JDBC avec une base de données

Examinons l'interaction de JDBC avec une base de données à travers des exemples de code.

Cela peut sembler compliqué au début, mais au fur et à mesure que vous progressez dans le cours, en particulier lors des travaux pratiques, vous comprendrez mieux comment cela fonctionne et ce qui doit être fait.

Pour commencer, voyons à quoi ressemble la base de données avec laquelle nous allons travailler et nous connecter. Nous travaillerons avec le schéma testDatabase et la table employees:

Une table assez simple dans la base de données. Maintenant, fixons-nous la tâche de récupérer des données telles que id, name et salary de la première ligne de la table (id=1):

Remarque

Vous pouvez trouver des instructions sur la façon de configurer correctement MySQL et de récupérer le db_username et le db_password ici : article.

Passons en revue étape par étape :

ÉtapeActionDescription
1Création de VariablesCréez des variables String pour stocker l'URL de la base de données (qui inclut le nom de la base de données, équivalent à USE DatabaseName en SQL), le username MySQL et le password de l'utilisateur. Les détails sont cachés pour des raisons de confidentialité.
2Établissement de la ConnexionUtilisez l'interface Connection et la classe DriverManager pour établir une connexion à la base de données. Cela implique d'appeler la méthode getConnection() avec l'URL de la base de données, le nom d'utilisateur et le mot de passe en paramètres, établissant ainsi une connexion pour envoyer des requêtes SQL.
3Préparation de l'InstructionEmployez la méthode prepareStatement() sur l'objet de connexion, et assignez l'objet d'instruction préparée résultant à une variable. Cet objet contient la requête SQL spécifiée dans le paramètre de la méthode.
4Exécution de la RequêteUtilisez la méthode executeQuery() sur l'objet d'instruction préparée, en assignant les résultats à un objet ResultSet. Cet objet contient maintenant les résultats de la requête SQL exécutée.
5Récupération des DonnéesVérifiez la présence de données dans le resultSet en utilisant la méthode next(). Si des données existent, des variables sont créées et assignées à partir de la première ligne du tableau. La méthode next() nous positionne initialement à la 1ère ligne du tableau, et elle est utilisée à nouveau pour passer aux lignes suivantes.
6Assignation des ValeursAssignez des valeurs aux variables en se référant aux noms de colonnes, tels que id, name, et salary. Les valeurs sont prises de la PREMIÈRE ligne du tableau, avec le processus répété pour les lignes supplémentaires si nécessaire en utilisant la méthode next().

La sortie ressemblera à ceci :

Si nous voulons afficher tous les éléments à l'écran, nous devons changer la condition if en une boucle while afin de traiter chaque élément.

Cela ressemblera à ceci :

Sortie :

Conclusion

Pour chaque interaction avec une base de données utilisant JDBC, le même algorithme est utilisé, comme montré dans l'exemple ci-dessus. Nous n'utiliserons pas cet algorithme exact fréquemment car nous utiliserons Hibernate pour interagir avec la base de données, mais il est essentiel que tout le monde soit conscient de cette méthode d'interaction avec la base de données fournie par le JDK.

1. Quelle est la fonction principale de l'interface Connection dans JDBC ?

2. Laquelle des propositions suivantes décrit le mieux le PreparedStatement dans JDBC ?

3. Quel est le rôle du DriverManager dans JDBC ?

4. Quel composant JDBC est responsable du stockage et du traitement des données récupérées d'une base de données à l'aide d'une requête SQL ?

Quelle est la fonction principale de l'interface `Connection` dans JDBC ?

Quelle est la fonction principale de l'interface Connection dans JDBC ?

Sélectionnez la réponse correcte

Laquelle des propositions suivantes décrit le mieux le `PreparedStatement` dans JDBC ?

Laquelle des propositions suivantes décrit le mieux le PreparedStatement dans JDBC ?

Sélectionnez la réponse correcte

Quel est le rôle du `DriverManager` dans JDBC ?

Quel est le rôle du DriverManager dans JDBC ?

Sélectionnez la réponse correcte

Quel composant JDBC est responsable du stockage et du traitement des données récupérées d'une base de données à l'aide d'une requête SQL ?

Quel composant JDBC est responsable du stockage et du traitement des données récupérées d'une base de données à l'aide d'une requête SQL ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 1. Chapitre 3
We're sorry to hear that something went wrong. What happened?
some-alt