Network round trips (query gone for execution to database and result comes to the screen, i.e., one network roundtrip) increases while sending multiple queries as individual queries to the database. It is recommended to combine them into a single unit/batch and send that batch to database only once for execution. This is called batch processing and this reduces network round trips between Java application and the database software.
For example
If ten queries are sent to database. Instead of sending them individual for ten times by having ten network roundtrips with browser window, it is recommended to combine them into single batch and send that batch to database only for one time.
Restriction
We cannot add select queries to the batch processing.
In batch processing java application sends query to database as a batch. Similarly, queries result comes back to application as a batch. All non-select queries executions give numeric results. But the select queries executions give ResultSet object. The executeBatch () method return type is int (), and it cannot store ResultSet object. So
we cannot add select queries to batch.
Batch processing does not perform transaction management on its own. But we can perform transaction management on batch processing by disabling the auto commit mode and by adding additional logics using connection.commit () , connection.rollback () methods.
Example of application batch processing
A table is created on Oracle table as shown below:
Source code for the application:
BatchProcess.java
import java.sql.*; public class BatchProcess { public void main (String args []) throws Exception { Class.forName ("oracle.jdbc.OracleDriver"); Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "tiger"); Statement st = con.createStatement (); //three queries update ,insert, delete are added to batch st.addBatch ("update student set address= ‘China’ where no=100"); st.addBatch ("insert into student values (109, ‘rahul’, ‘india’)"); st.addBatch ("delete from student where no=101"); int result [] = st.executeBatch (); int sum = 0; for (int i=0; i<result .length; ++i) { sum = sum+result [i]; } System.out.println (sum); } }
Code explanation:
st.addBatch (“update student set address= ‘China’ where no=100”); st.addBatch (“insert into student values (109, ‘rahul’, ‘india’)”); st.addBatch (“delete from student where no=101”);
In the above statements three different queries are added to a batch.
int result[] = st.executeBatch ();
In this code execution an operation is performed and the result, whose return type is integer, is stored in an array.
The program in the next page shows the number of operations that are done. Data in the database table after the execution of the program.