English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Batch JDBC (Batch)

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

Lorsque vous envoyez plusieurs requêtes SQL à la fois au database, vous pouvez réduire les coûts de communication, améliorant ainsi les performances.

  • Le pilote JDBC n'a pas besoin de prendre en charge cette fonctionnalité. Vous devriez utiliser la méthode DatabaseMetaData.supportsBatchUpdates() pour déterminer si la base de données cible prend en charge le traitement des mises à jour en lot. Si le pilote JDBC prend en charge cette fonctionnalité, cette méthode retourne true.

  • Les méthodes addBatch() de Statement, PreparedStatement et CallableStatement sont utilisées pour ajouter une seule requête au lot. executeBatch() est utilisé pour commencer à exécuter toutes les requêtes combinées ensemble.

  • executeBatch() retourne un tableau d'entiers, où chaque élément représente le comptage de mise à jour de la requête update correspondante.

  • comme vous pouvez ajouter des statements au lot pour les traiter, vous pouvez également utiliser la méthode clearBatch () pour les supprimer. Cette méthode supprime toutes les statements ajoutées avec la méthode addBatch(). Cependant, vous ne pouvez pas sélectionner les statements à supprimer.

utiliser l'objet statement pour des lots

c'est une séquence de pas typique pour utiliser les lots avec des objets Statement-

  • utiliser ces deuxcreateStatement()méthode pour créer un objet Statement.

  • utiliser setAutoCommit () pour configurer auto-commit est configuré sur false.

  • utiliser la méthode addBatch() sur l'objet statement créé pour ajouter un nombre quelconque de requêtes SQL au lot.

  • Pour exécuter toutes les instructions SQL avec la méthode executeBatch () de l'objet de déclaration créé.

  • Enfin, utilisercommit()Méthode pour soumettre toutes les modifications.

Exemple

le code suivant fournit un exemple d'utilisation de l'objet Statement pour des mises à jour en lot.-

// créer un objet statement
Statement stmt = conn.createStatement();
// Définir le commit automatique à false
conn.setAutoCommit(false);
// Créer une instruction SQL
String SQL = "INSERT INTO Employees (id, first, last, age) "; +
             "VALUES(200, 'Zia', 'Ali', 30)";
// ajouter les requêtes SQL ci-dessus au lot.
stmt.addBatch(SQL);
// créer une autre requête SQL
String SQL = "INSERT INTO Employees (id, first, last, age) "; +
             "VALUES(201,'Raj', 'Kumar', 35)";
// ajouter les requêtes SQL ci-dessus au lot.
stmt.addBatch(SQL);
// créer une autre requête SQL
String SQL = "UPDATE Employees SET age = 35 " +
             "WHERE id = 100";
// ajouter les requêtes SQL ci-dessus au lot.
stmt.addBatch(SQL);
// Créer un int[] pour sauvegarder les valeurs retournées
int[] count = stmt.executeBatch();
//Soumettre explicitement l'instruction pour appliquer les modifications
conn.commit();

Pour mieux comprendre, étudionsCode d'exemple de traitement par lots.

utiliser l'objet PrepareStatement pour des lots

c'est une séquence de pas typique pour utiliser les lots avec des objets PrepareStatement-

  1. créer des requêtes SQL en utilisant des placeholders.

  2. utiliser l'un des méthodes PrepareStatement() pour créer un objet PrepareStatement.

  3. utiliser setAutoCommit () pour configurer auto-commit est configuré sur false.

  4. Pour ajouter le plus de instructions SQL possibles au lot, utiliser la méthode addBatch () sur l'objet de déclaration créé.

  5. Pour exécuter toutes les instructions SQL avec la méthode executeBatch () de l'objet de déclaration créé.

  6. Enfin, utilisercommit()Méthode pour soumettre toutes les modifications.

Le code suivant fournit un exemple d'utilisation de l'objet PreparedStatement pour la mise à jour en lots-

// Créer une instruction SQL
String SQL = "INSERT INTO Employees (id, first, last, age) "; +
             "VALUES(?, ?, ?, ?)";
// Créer un objet PreparedStatement
PreparedStatemen pstmt = conn.prepareStatement(SQL);
//Définir le commit automatique à false
conn.setAutoCommit(false);
// Définir les variables
pstmt.setInt( 1, 400);
pstmt.setString( 2, "Pappu");
pstmt.setString( 3, "Singh");
pstmt.setInt( 4, 33 );
// Le joindre au lot
pstmt.addBatch();
// Définir les variables
pstmt.setInt( 1, 401 );
pstmt.setString( 2, "Pawan");
pstmt.setString( 3, "Singh");
pstmt.setInt( 4, 31 );
// Le joindre au lot
pstmt.addBatch();
//Ajouter plus de lots
.
.
.
.
//Créer un int[] pour sauvegarder les valeurs retournées
int[] count = stmt.executeBatch();
//Soumettre explicitement l'instruction pour appliquer les modifications
conn.commit();

Pour mieux comprendre, étudionsCode d'exemple de traitement par lots.