Sök…


Introduktion

Uttalande-batchning kör antingen flera påståenden som en enhet (med en normal java.sql.Statement ) eller ett enda uttalande med flera uppsättningar av parametervärden (med en java.sql.PreparedStatement ).

Anmärkningar

Uttalande-batchning tillåter ett program att samla in relaterat uttalande, eller i fallet med förberedda uttalanden relaterade parametervärdeuppsättningar, och skicka dem till databaseservern som en enda exekvering.

Fördelarna med uttalande batchning kan inkludera förbättrad prestanda. Om och hur dessa prestationsfördelar uppnås beror på drivrutinen och databasstödet, men de inkluderar:

  • Skicka alla uttalanden (eller alla värdesätt) i ett kommando
  • Omskrivning av uttalanden så att de kan köras som ett stort uttalande

Batchinsättning med PreparedStatement

Batchkörning med java.sql.PreparedStatement låter dig köra ett enda DML-uttalande med flera uppsättningar värden för dess parametrar.

Det här exemplet visar hur man förbereder ett inläggsförklaring och använder det för att infoga flera rader i en batch.

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 

Batchkörning med uttalande

Batchkörning med java.sql.Statement låter dig köra flera DML-uttalanden ( update , insert , delete ) på en gång. Detta uppnås genom att skapa ett enda uttalandeobjekt, lägga till uttalandena för att köra och sedan köra partiet som ett.

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 

Notera:

statement.executeBatch(); kommer att returnera int[] att hålla tillbaka värden, du kan köra din batch så här:

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow