In look at batch updates for CallableStatements I found the following information:
Based on these restrictions, could you use PreparedStatement to call the stored procedure in batch? Or do you still need to use CallableStatements? If that is true, could someone point me to documentation that explains why stored procedures must be called with CallableStatements.
The ability to make batch updates is the same for CallableStatement objects as it is for PreparedStatement objects. In fact, a CallableStatement object is restricted to the same functionality that a PreparedStatement object has. More precisely, when using the batch update facility, a CallableStatement object can call only stored procedures that take input parameters or no parameters at all. Further, the stored procedure must return an update count. The CallableStatement.executeBatch method (inherited from PreparedStatement) will throw a BatchUpdateException if the stored procedure returns anything other than an update count or takes OUT or INOUT parameters.