Durch die Batch-Variante wird eben 1000 Mal ein Insert-Befehl aufgerufen.
Warum verwendest du nicht direkt Execute() ???
Durch den Batch wird das ganze erst mal gesammelt und dann als Stapel übertragen. Ich habe keine Ahnung ob Prepared dann überhaupt funktioniert.
Im COBOL verwendest du ja auch kein Batch (was es da ja auch nicht gibt).
Allerdings darf Java schon mal 3-5 Mal langsamer sein.