Zoeken…


Invoering

Statement batching is ofwel het uitvoeren van meerdere statements als één eenheid (met een normale java.sql.Statement ), of een enkele statement met meerdere sets parameterwaarden (met een java.sql.PreparedStatement ).

Opmerkingen

Statement batching stelt een programma in staat om gerelateerde instructies te verzamelen, of in het geval van voorbereide instructies gerelateerde parameterwaardesets, en deze als een enkele keer naar de databaseserver te sturen.

De voordelen van statement batching kunnen verbeterde prestaties zijn. Of en hoe deze prestatievoordelen worden behaald, hangt af van de ondersteuning van stuurprogramma's en databases, maar deze omvatten:

  • Alle instructies (of alle waardensets) in één opdracht verzenden
  • De instructie (s) herschrijven zodat ze als één grote instructie kunnen worden uitgevoerd

Batch inbrengen met PreparedStatement

Batchuitvoering met java.sql.PreparedStatement stelt u in staat om een enkele DML-instructie uit te voeren met meerdere sets waarden voor de parameters.

Dit voorbeeld laat zien hoe u een invoeginstructie kunt voorbereiden en deze kunt gebruiken om meerdere rijen in een batch in te voegen.

Connection connection = ...; // obtained earlier
connection.setAutoCommit(false); // disabling autoCommit is recommend for batching
int orderId = ...; // The primary key of inserting and order
List<OrderItem> orderItems = ...; // Order item data

try (PreparedStatement insert = connection.prepareStatement(
        "INSERT INTO orderlines(orderid, itemid, quantity) VALUES (?, ?, ?)")) {
    // Add the order item data to the batch
    for (OrderItem orderItem : orderItems) {
        insert.setInt(1, orderId);
        insert.setInt(2, orderItem.getItemId());
        insert.setInt(3, orderItem.getQuantity());
        insert.addBatch();
    }

    insert.executeBatch();//executing the batch 
}

connection.commit();//commit statements to apply changes 

Batchuitvoering met Statement

Batchuitvoering met java.sql.Statement stelt u in staat om meerdere DML-instructies ( update , insert , delete ) tegelijkertijd uit te voeren. Dit wordt bereikt door een enkel instructieobject te maken, de uit te voeren instructies toe te voegen en vervolgens de batch als één uit te voeren.

Connection connection = ...; // obtained earlier
connection.setAutoCommit(false); // disabling autocommit is recommended for batch execution

try (Statement statement = connection.createStatement()) {
    statement.addBatch("INSERT INTO users (id, username) VALUES (2, 'anna')");
    statement.addBatch("INSERT INTO userrole(userid, rolename) VALUES (2, 'admin')");
    
    statement.executeBatch();//executing the batch 
}

connection.commit();//commit statements to apply changes 

Notitie:

statement.executeBatch(); retourneert int[] om geretourneerde waarden vast te houden, u kunt uw batch als volgt uitvoeren:

int[] stmExc = statement.executeBatch();//executing the batch 


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow