Statement & PreparedStatement

Statement & PreparedStatement

Statement : c’une interface qui nous fournit des méthodes pour exécuter des requêtes avec une bd. Cette dernière est une usine de Resultset.

Les méthodes qu’on peut utiliser sont les suivantes :

– public ResultSet executeQuery(String sql) : on l’utilise pour executer une requete de type select, elle nous retourne un objet de type ReseltSet.

public int executeUpdate(String sql) : utiliser pour executer une requete de type create, drop, insert, update ou delete.

public boolean execute(String sql) : pour executer des requetes qui vont retourner plusieurs résultats.

public int[] executeBatch() : pour executer des commandes batch.

PreparedStatement : c’une sous interface de Statement, on l’utilise pour exécuter des requêtes paramètres. L’utilisation de PreparedStatement rend l’application rapide car les requêtes paramètres sont compilées une seule fois.

L’interface Connection

Connection : L’interface Connection est une interface qui joue en fait le rôle de session entre une application et une bd, et c’est via cette interface qu’on peut fabriquer des Statement, PreparedStatement, and DatabaseMetaData.

Les classes qui implémentent cette interface doivent obligatoirement redéfinir les méthodes suivantes :

public Statement createStatement() : créer un objet de type statement pour executer des requetes SQL.

public Statement createStatement(int resultSetType,int resultSetConcurrency) : Crée un objet Statement qui va générer des objets ResultSet avec le type et la simultanéité donnée

public void setAutoCommit(boolean status) : on l’utilise pour modifier l’etat du commit, il est true par défaut.

public void commit() : souvegarder toutes les modifications faites après le dernier commit.

public void rollback() : supprimer toutes les modifications faites après le dernier commit.

public void close() : fermer la connexion et libérer les ressources JDBC.

La classe DriverManager

La classe DriverManager : cette classe joue le rôle d’intermediare entre l’utilisateur et le pilote(driver) utilisé(le chargement des pilotes). C’est via cette derniere qu’on peut établir une connexion entre une bd et le pilote approprié. Cette dernière maintient une liste des pilotes(drivers) qui sont enregistrés en appelant la méthode registerDriver.

4 méthodes sont appelées lors de l’utilisation de cette classe :

public static void registerDriver(Driver driver) : on l’utilise lorsqu’on veut enregistrer un driver.

public static void deregisterDriver(Driver driver) : pour désenregistrer un driver.

public static Connection getConnection(String url) : pour établir une connexion avec l’url spécifié.

public static Connection getConnection(String url,String userName,String password) : pour établir une connexion avec l’url spécifié, nom d’utilisateur et mot de passe.

Qu’est-ce que le framework Hibernate

Qu’est-ce que le framework Hibernate ?

Hibernate est un Framework open source, léger & ORM, ce dernier à été lancé en 2001 par Gavin King.

Hibernate est un Framework de persistance utilisé pour gérer la persistance des objets java dans une base de données, il peut être utilisé dans un développement web ou bien un développement client lourd.
Hibernate peut utiliser sql comme il peut utiliser son propre langage de requête HQL(Hibernate Query Language).

ORM(Object relational mapping) : c’est une méthode de programmation pour mapper les objets.

HQL(Hibernate Query Language) : est la version orienté objet du langage sql (on utilise le nom de la classe au lieu du nom de la table).

Architecture du framework Hibernate 

Hibernate architecture

Les avantages et les inconvénients du framework Hibernate :

Avantages :

  • Base de données indépendante : on n’a pas besoin d’écrire un code spécifique pour la base de données (si on ne change la bd, on ne sera pas obligé à modifier dans le code l’application “requêtes sql” ).
  • On peut mettre à jour la base de données sans écrire du code sql ou hql.
  • Le framework Hibernate est opensource sous licence LGPL.

Inconvénients :

  • Il est un peu difficile de faire des requêtes complexe avec HQL.

Se connecter à une base de données

Dans cet article nous allons voir les étapes nécessaires pour se connecter à une base de données en utilisant l’API JDBC:

1 – Chargement du pilote (Driver) :

Pour charger un pilote, il faudrait utiliser la méthode forName de la classe Class

forName :

2- Création de la Connexion :

Pour créer une connexion nous devons utiliser la méthode getConnection de la classe DriverManager
Classe DriverManager : La classe DriverManager existe dans le package java.sql, elle agit comme une interface entre l’utilisateur et les pilotes. C’est par son intermédiaire que nous pouvons obtenir une connexion vers la base de données.

getConnection :

Connection : L’interface Connection est la session entre l’application java et la base de données, elle existe dans le package java.sql.

3- Création de l’objet Statement :

Pour créer un objet de type statement, nous allons utiliser la l’interface Statement.
Statement : Existe dans le package java.sql, elle fournit des méthodes pour exécuter des requêtes avec la base de données.

4- Exécution de la requête :

La méthode executeQuery ( ) est utilisée pour exécuter des requêtes à la base de données(nous allons voir d’autres méthodes pour mettre à jour une base de données).

5- Fermeture de la connexion :

Pour fermer la connexion avec une BD, il faudrait utiliser la méthode close();

6- Exemple (Se connecter à une base de données MySql):

Pour se connecter à une base de données MySql, Nous avons besoin :
Télécharger MySql jdbc driver
– Vérifier que votre seveur base de données est bien démarré.
– Créer une base de données

Résultat :

res_jdbc

Les types de pilotes JDBC

Le driver JDBC est un composant logiciel qui permet a un programme java d’interagir avec une base de donnée, il y a 4 types de pilote JDBC (Java Data Base Conectivity) :

  1. Le pont JDBC-ODBC (JDBC-ODBC bridge driver)
  2. Pilote natif(Native-API driver “partially java driver”)
  3. Le pilote de protocole réseau (Network Protocol driver “fully java driver”)
  4. Pilote entièrement écrit en java(Thin driver)

1. Le pont JDBC-ODBC (JDBC-ODBC bridge driver) :

Il permet l’accès au SGBD via le pilote(driver) ODBC.

JDBC-ODBC-bridge-driver

Le pont JDBC-ODBC

Avantages:

  • peut être facilement connecté à une base de données.

Inconvénients:

  • Le pilote ODBC doit être installé sur l’ordinateur client
  • Ne convient pas aux applets, car le pilote ODBC doit être installé sur le client.
  • rend l’application moins portable et dépendante d’une plate-forme

2. Pilote natif(Native-API driver “partially java driver”) :

Pilote(Driver) n’est pas entièrement écrit en Java. La partie de ce pilote écrite en Java effectue simplement des appels vers des fonctions du pilote natif., ce dernier convertit les methodes JDBC pour appeler directement les API de la base de données via un pilote natif sur le client.

JDBC - API native de la base de données

JDBC – API native de la base de données

Avantages :

  • performance améliorée par rapport au 1er type(pont JDBC-ODBC).

Inconvénients :

  • Le pilote natif doit être installé sur chaque machine cliente.
  • Ce pilote ne supporte pas les applets.

3. Le pilote de protocole réseau (Network Protocol driver “fully java driver”) :

Le pilote de protocole réseau utilise “middleware” (serveur d’application) qui convertit les appels JDBC directement ou indirectement dans le protocole de base de données spécifique au fournisseur. Il est entièrement écrit en Java.

JDBC - le pilote de protocole réseau

JDBC – le pilote de protocole réseau

Avantage:

  • Aucune bibliothèque côté client est nécessaire.
  • Le serveur d’application peut effectuer de nombreuses tâches comme la vérification, l’équilibrage de charge, etc…
  • Un seul pilote peut gérer n’importe quelle base de données.
  • Le client n’a pas besoin d’être modifié pour une nouvelle base de données.

Inconvénients:

  • Le réseau de soutien est nécessaire au niveau de la machine du client.

4. Pilote entièrement écrit en java(Thin driver) :

Ce type de pilote(driver) écrit en java, se connecte directement au SGBD. Il est fourni par l’éditeur de la base de données.

JDBC - Thin driver

JDBC – Thin driver

Avantage:

  • Complètement implémenté en Java pour réaliser l’indépendance de plateforme.
  • Performant que les autres types de pilotes (driver).

Inconvénients :

  • Pilotes dépend de la base de données.

Introduction à JDBC

Qu’est ce que JDBC ?

The JDBC API is a Java API that can access any kind of tabular data, especially data stored in a Relational Database.

JDBC (Java DataBase Connectivity) est une API (Application Programming Interface) fournie avec Java depuis la version 1.1 du JDK. Elle fournit un ensemble de classes et d’interfaces permettant l’accès, à partir de programmes java, à des données tabulaires, particulièrement, les données stockées dans une base de données relationnelle.

JDBC vous aide à créer des programmes Java capable de :

  1. Se connecter à une source de données (Base de données, fichier XML,…)
  2. Envoyer des requêtes SQL (Select, Update,…) à la base de données
  3. Récupérer et traiter les données retournées par le SGBD

Le schéma ci-dessous reprend le cheminement logique depuis le pilote jusqu’aux données.

JDBC - Le cheminement logique depuis le pilote jusqu’aux données.

JDBC – Le cheminement logique depuis le pilote jusqu’aux données.

La classe DriverManager est le point de départ. Elle assure la liaison avec le pilote. C’est par son intermédiaire que nous pouvons obtenir une connexion vers la base de données. Celle-ci est représentée par une instance de classe implémentant l’interface Connection. Cette connexion est ensuite utilisée pour transmettre des instructions vers la base. Les requêtes simples sont exécutées grâce à l’interface Statement, les requêtes avec paramètres le sont avec l’interface PreparedStatement et les procédures stockées avec l’interface CallableStatement. Les éventuels enregistrements sélectionnés par l’instruction SQL sont accessibles avec un élément Resultset.

Architecture de JDBC

L’API JDBC prend en charge deux modèles pour accéder à une base de données :

Modèle 2-tiers (Two-tier Processing Model) :

Modèle JDBC deux tiers

Modèle JDBC deux tiers

Modèle à 3-tiers (Three-tier Processing Models) :

JDBC modèle 3-tiers

JDBC modèle 3-tiers