Contenu du cours
Manipulation des Données Java avec Hibernate
Manipulation des Données Java avec Hibernate
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 :
- Établir une connexion à la base de données ;
- Envoyer une requête SQL à la base de données ;
- Recevoir des données sous forme de réponse ;
- Interpréter correctement ces données, en les adaptant au code Java ;
- 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
ouPreparedStatement
; - 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 quePreparedStatement
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
), leResultSet
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
etConnection
effectuent le premier processus : Établir une connexion à la base de données. LeDriverManager
sélectionne le pilote approprié pour le SGBD spécifique, et laConnection
utilise ce pilote pour connecter le code à la base de données ; Statement
etPreparedStatement
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'uneList
.
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 ledb_password
ici : article.
Passons en revue étape par étape :
Étape | Action | Description |
---|---|---|
1 | Création de Variables | Cré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 Connexion | Utilisez 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. |
3 | Préparation de l'Instruction | Employez 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. |
4 | Exécution de la Requête | Utilisez 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. |
5 | Récupération des Données | Vé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. |
6 | Assignation des Valeurs | Assignez 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 ?
Merci pour vos commentaires !