Module 12 Couche DAL

La couche Data Access Layer gère les échanges avec le SGBD (sytème de gestion de bases de données) et avec les bases de données.

Ce module est grandement inspiré du livre “Java, les fondamentaux du langage” publié par l’ENI, plus précisément le chapitre 6 (p.361 à 412).

Pour manipuler une base de données à partir d’un langage de programmation, il est possible de :

⸺ communiquer directement avec la base de données
⸺ ou utiliser une couche logicielle qui assure elle-même le dialogue avec la base de données

L’API JDBC (java database connectivity) a été développée spécifiquement pour mettre en place la deuxième solution.
Elle est composée de deux packages :

  • java.sql : un ensemble de classes, essentiellement des interfaces, pour accéder et traiter des données stockées dans une base
  • javax.sql : un ensemble de classes, essentiellement des interfaces, pour l’accès et le traitement des sources de données côté serveur

Plus de détails sur l’API dans la javadoc ici.

Pour utiliser l’API JDBC avec un SGBD particulier, il est nécessaire d’utiliser un pilote (driver) pour assurer la médiation entre la technologie JDBC et la base de données.
Il existe différents types de pilotes (hors programme).
–> Nous allons utiliser un type de pilote entièrement écrit en Java : chaque SGBD propose son pilote spécifique, qu’il faut télécharger et lier à son projet Java.

L’API JDBC est une bibliothèque de classes JDBC, qui se charge de trois étapes indispensables à la connexion à une base de données : la création d’une connexion à la base, l’envoi d’instructions SQL et l’exploitation des résultats provenant de la base.

Site à checker plus tard ici

Les principales classes de l’API JDBC que nous allons utiliser permettent de retracer le cheminement logique depuis le pilote jusqu’aux données :

  • 1/ la classe DriveManager : point de départ qui assure la liaison avec le pilote, c’est par son intermédiaire que l’on obtient une connexion vers la base de données

  • 2/ la classe Connection : représente une connexion vers la base de données

  • 3/ La connexion ainsi créée permet de transmettre des instructions (requêtes) vers la base :

    • la classe Statement : utilisée pour exécuter les requêtes simples (statiques) et retourner le résultat 12.4.1
    • la classe PreparedStatement : utilisée pour les requêtes paramétrées ?? (représente les requêtes précompilées)
    • la classe CallableStatement : utilisée pour exécuter les procédures stockées ??
  • 4/ la classe ResultSet : les éventuels enregistrements sélectionnés par l’instruction SQL sont accessibles avec un élément ResultSet

Plus de détails sur les classes du package java.sql dans la javadoc ici.

Hors-programme :
Une API (application programming interface) est un ensemble normalisé de classes, de méthodes, de fonctions et de constantes qui sert de façade par laquelle un logiciel offre des services à d’autres logiciels.

– TODO à supprimer

méthodes de Connection : Statement createStatement() Creates a Statement object for sending SQL statements to the database. PreparedStatement prepareStatement(String sql) Creates a PreparedStatement object for sending parameterized SQL statements to the database. CallableStatement prepareCall(String sql) Creates a CallableStatement object for calling database stored procedures.

tuto : https: –www.jmdoudoux.fr/java/dej/chap-jdbc.htm