package ar.com.javacuriosities.jdbc;
import static ar.com.javacuriosities.jdbc.util.Constants.PASSWORD;
import static ar.com.javacuriosities.jdbc.util.Constants.URL;
import static ar.com.javacuriosities.jdbc.util.Constants.USER;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
/*
* Podemos usar el modo batch cuando queremos preparar varias consultas y enviarlas todas juntas
* para mejorar la performance de nuestra aplicacion
*/
public class Lesson05Batch {
private static final int BATCH_SIZE = 2;
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
try (Connection connection = DriverManager.getConnection(URL, USER, PASSWORD)) {
String SQL = "INSERT INTO bulk_table (data) " + "VALUES(?)";
PreparedStatement preparedStatement = connection.prepareStatement(SQL);
// Desactivamos el Auto-commit
connection.setAutoCommit(false);
for (int count = 1; count <= 10; count++) {
// Asignamos las variables
preparedStatement.setString(1, "Random Data");
// Agregamos el PreparedStatement al batch
preparedStatement.addBatch();
if(count % BATCH_SIZE == 0){
// Devuelve un array con el update de cada query
preparedStatement.executeBatch();
}
}
// Ejecutamos el commit
connection.commit();
}
} catch (Exception e) {
// Log and Handle exception
e.printStackTrace();
}
}
}