Traitement par lots – Batch Processing | JDBC – Java

Le traitement par lots vous permet de regrouper des instructions SQL associées dans un lot et de les soumettre en un seul appel à la base de données.

Lorsque vous envoyez plusieurs instructions SQL à la base de données à la fois, vous réduisez le volume de communication, améliorant ainsi les performances.
 
 
Les pilotes JDBC ne sont pas requis pour prendre en charge cette fonctionnalité. Vous devez utiliser la méthode DatabaseMetaData.supportsBatchUpdates() pour déterminer si la base de données cible prend en charge le traitement par lots. La méthode renvoie TRUE si votre pilote JDBC prend en charge cette fonctionnalité.

La méthode addBatch() de Statement, PreparedStatement et CallableStatement est utilisée pour ajouter des instructions individuelles au lot. Le executeBatch() est utilisé pour démarrer l’exécution de toutes les instructions regroupées.

ExecuteBatch() renvoie un tableau des entiers, et chaque élément du tableau représente le nombre de mises à jour.

Comme vous pouvez ajouter des instructions à un lot pour un traitement, vous pouvez les supprimer avec la méthode clearBatch(). Cette méthode supprime toutes les instructions que vous avez ajoutées avec la méthode addBatch(). Cependant, vous ne pouvez pas choisir de manière sélective l’instruction à supprimer.
 

Méthodes de l’interface Statement

Les méthodes requises pour le traitement par lots sont indiquées ci-dessous:

Méthode
Description
void addBatch(String query) Il ajoute une requête SQL au lot.
int[] executeBatch() Il exécute le lot de requêtes.

 
 

Batching avec un objet Statement

Voici une séquence d’étapes pour utiliser le traitement par lots avec un objet Statement:

  • Créez un objet Statement à l’aide des méthodes createStatement().
  • Définissez la validation automatique(auto-commit) sur false à l’aide de setAutoCommit().
  • Ajoutez autant d’instructions SQL que vous le souhaitez dans le lot à l’aide de la méthode addBatch() sur l’objet Statement créé.
  • Exécutez toutes les instructions SQL à l’aide de la méthode executeBatch() sur l’objet Statement créé.
  • Enfin, validez toutes les modifications à l’aide de la méthode commit().

 

Exemple: En utilisant Statement
// Créer un objet Statement 
Statement stmt = conn.createStatement();

// Définissez la validation automatique(auto-commit) sur false
conn.setAutoCommit(false);

// Créer une instruction SQL
String query = "INSERT INTO Emp (id, nom) VALUES(101,'Bob')";
// Ajoutez l'instruction SQL ci-dessus dans le lot.
stmt.addBatch(query);

// Créer une autre instruction SQL
String query = "INSERT INTO Emp (id, nom) VALUES(102,'Alex')";
// Ajoutez l'instruction SQL ci-dessus dans le lot.
stmt.addBatch(query);

// Créer une autre instruction SQL
String query = "DELETE FROM Emp WHERE id = 101";
// Ajoutez l'instruction SQL ci-dessus dans le lot.
stmt.addBatch(query);

// Créez un tableau d'entier pour contenir les valeurs renvoyées
int[] count = stmt.executeBatch();

//Valider explicitement les instructions pour appliquer les modifications
conn.commit();

 
 

Exemple: En utilisant PreparedStatement
// Créer une instruction SQL
String SQL = "INSERT INTO Emp (id, nom) VALUES(?, ?)";

// Créer un objet PrepareStatement
PreparedStatemen pr = conn.prepareStatement(SQL);

//Définissez la validation automatique(auto-commit) sur false
conn.setAutoCommit(false);

// Définissez les variables
pr.setInt(1, 101);
pr.setString(2, "Alex");
// Ajoutez-le au lot
pr.addBatch();

// Définissez les variables
pr.setInt(1, 102);
pr.setString(2, "Thomas");
// Ajoutez-le au lot
pr.addBatch();

//ajouter plus de lots ...

// Créez un tableau d'entier pour contenir les valeurs renvoyées
int[] count = stmt.executeBatch();

//Valider explicitement les instructions pour appliquer les modifications
conn.commit();

Si vous jeter un coup d’œil sur la table ’emp’, deux enregistrements ont été ajoutés.
 
QCM Java - JDBC

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *