English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O processamento em lote permite que você agrupe语句相关的SQL em um lote e os submeta em uma chamada única para o banco de dados.
ao enviar várias sentenças SQL para o banco de dados de uma vez, você pode reduzir o overhead de comunicação, aumentando assim o desempenho.
O driver JDBC não precisa suportar essa característica. Você deve usar o método DatabaseMetaData.supportsBatchUpdates () para determinar se o banco de dados alvo suporta o processamento de atualizações em lote. Se o driver JDBC suportar essa característica, o método retorna true.
Os métodos addBatch () dos objetos Statement, PreparedStatement e CallableStatement são usados para adicionar uma única sentença ao lote. executeBatch () é usado para começar a executar todos os statements combinados.
executeBatch() retorna um array de inteiros, onde cada elemento representa a contagem de atualizações correspondente à sentença update.
da mesma forma que você pode adicionar sentenças ao lote para processamento, você também pode usá-las para excluir com o método clearBatch () . Este método remove todas as sentenças que foram adicionadas com o método addBatch () . No entanto, não é possível escolher as sentenças a serem excluídas.
esta é a sequência típica de passos para usar lotes com objetos Statement-
usar esses doiscreateStatement()método para criar objetos Statement.
usar setAutoCommit () para definir auto-commit definido como false.
usar o método addBatch() no objeto de sentença criado para adicionar qualquer quantidade de sentenças SQL ao lote.
executar todos os SQL statements usando o método executeBatch() do objeto de sentença criado.
Finalmente, usandocommit()Método para submeter todas as alterações.
o seguinte código fornece um exemplo de atualização em lote usando o objeto Statement-
// criar objeto de sentença Statement stmt = conn.createStatement(); // Definindo o commit automático como false conn.setAutoCommit(false); // Criando sentença SQL String SQL = "INSERT INTO Employees (id, first, last, age) "; + "VALUES(200, 'Zia', 'Ali', 30)"; // adicionar a sentença SQL superior ao lote. stmt.addBatch(SQL); // criar outra sentença SQL String SQL = "INSERT INTO Employees (id, first, last, age) "; + "VALUES(201,'Raj', 'Kumar', 35)"; // adicionar a sentença SQL superior ao lote. stmt.addBatch(SQL); // criar outra sentença SQL String SQL = "UPDATE Employees SET age = 35 " + "WHERE id = 100"; // adicionar a sentença SQL superior ao lote. stmt.addBatch(SQL); // Criando um int[] para armazenar os valores retornados int[] count = stmt.executeBatch(); //Submetendo claramente a sentença para aplicar as alterações conn.commit();
Para entender melhor, vamos estudarCódigo de Exemplo de Batch Processamento.
esta é a sequência típica de passos para usar lotes com objetos PrepareStatement-
criar uma sentença SQL usando placeholders.
usar qualquer método PrepareStatement() para criar um objeto PrepareStatement.
usar setAutoCommit () para definir auto-commit definido como false.
Adicionar o máximo possível de SQL statements ao lote usando o método addBatch() do objeto de sentença criado.
executar todos os SQL statements usando o método executeBatch() do objeto de sentença criado.
Finalmente, usandocommit()Método para submeter todas as alterações.
O seguinte código fornece um exemplo de atualização em lote usando o objeto PreparedStatemen-
// Criando sentença SQL String SQL = "INSERT INTO Employees (id, first, last, age) "; + "VALUES(?, ?, ?, ?)"; // Criando objeto PreparedStatemen PreparedStatemen pstmt = conn.prepareStatement(SQL); //Definindo o commit automático como false conn.setAutoCommit(false); // Definir variáveis pstmt.setInt( 1, 400); pstmt.setString( 2, "Pappu"); pstmt.setString( 3, "Singh"); pstmt.setInt( 4, 33 ); // Adicionando ao lote pstmt.addBatch(); // Definir variáveis pstmt.setInt( 1, 401 ); pstmt.setString( 2, "Pawan"); pstmt.setString( 3, "Singh"); pstmt.setInt( 4, 31 ); // Adicionando ao lote pstmt.addBatch(); //Adicionar mais batches . . . . //Criando um int[] para armazenar os valores retornados int[] count = stmt.executeBatch(); //Submetendo claramente a sentença para aplicar as alterações conn.commit();
Para entender melhor, vamos estudarCódigo de Exemplo de Batch Processamento.