Está utilizando GenerationType.IDENTITY para la secuenciación, lo que requiere recuperar los ID de cada instrucción de inserción uno por uno. Pruebe un esquema de secuencia que permita la preasignación en lotes de 500 y verá mejoras://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Identity_sequencing