खोज…
परिचय
java.sql.Statement
) के रूप में कई स्टेटमेंट्स निष्पादित कर रहा है, या पैरामीटर मानों के कई सेटों के साथ एक सिंगल स्टेटमेंट ( java.sql.PreparedStatement
साथ)।
टिप्पणियों
स्टेटमेंट बैचिंग एक प्रोग्राम को संबंधित स्टेटमेंट या तैयार स्टेटमेंट्स संबंधित पैरामीटर वैल्यू सेट के मामले में इकट्ठा करने की अनुमति देता है, और उन्हें डेटाबेस सर्वर को एक एकल निष्पादन के रूप में भेजता है।
स्टेटमेंट बैचिंग के लाभों में बेहतर प्रदर्शन शामिल हो सकता है। यदि और इन प्रदर्शन लाभों को प्राप्त किया जाता है तो ड्राइवर और डेटाबेस समर्थन पर निर्भर करता है, लेकिन वे शामिल हैं:
- एक कमांड में सभी स्टेटमेंट (या सभी वैल्यू सेट) भेजना
- कथन को फिर से लिखना ताकि उन्हें एक बड़े बयान की तरह निष्पादित किया जा सके
बैच सम्मिलन की तैयारी का उपयोग करके
java.sql.PreparedStatement
का उपयोग करते हुए बैच निष्पादन आपको अपने मापदंडों के लिए मूल्यों के कई सेट के साथ एक एकल डीएमएल कथन को निष्पादित करने की अनुमति देता है।
यह उदाहरण प्रदर्शित करता है कि सम्मिलित विवरण कैसे तैयार करें और बैच में कई पंक्तियों को सम्मिलित करने के लिए इसका उपयोग करें।
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
स्टेटमेंट का उपयोग करके बैच निष्पादन
java.sql.Statement
का उपयोग करके बैच निष्पादन आपको एक ही बार में कई डीएमएल स्टेटमेंट ( update
, insert
, delete
) निष्पादित करने की अनुमति देता है। एकल कथन ऑब्जेक्ट बनाकर, निष्पादित करने के लिए कथनों को जोड़कर और फिर बैच को एक के रूप में निष्पादित करके इसे प्राप्त किया जाता है।
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
ध्यान दें:
statement.executeBatch();
लौटाए गए मानों को रखने के लिए int[]
लौटेंगे, आप अपने बैच को इस तरह निष्पादित कर सकते हैं:
int[] stmExc = statement.executeBatch();//executing the batch